Number Systems

38
– 1 – 52011 Number Systems Number of symbols = base of the system Most intuitive -- base 10 (decimal system) counting on fingertips symbols -- 0 1 2 3 4 5 6 7 8 9 Computers use base 2 (binary system) only two symbols - 0 / 1 Many physical reasons for choosing Other useful bases 8 - octal 16 - hexadecimal

description

Number Systems. Number of symbols = base of the system Most intuitive -- base 10 (decimal system) counting on fingertips symbols -- 0 1 2 3 4 5 6 7 8 9 Computers use base 2 (binary system) only two symbols - 0 / 1 Many physical reasons for choosing Other useful bases 8 - octal - PowerPoint PPT Presentation

Transcript of Number Systems

Page 1: Number Systems

– 1 – 52011

Number SystemsNumber Systems

Number of symbols = base of the system Most intuitive -- base 10 (decimal system)

counting on fingertipssymbols -- 0 1 2 3 4 5 6 7 8 9

Computers use base 2 (binary system)only two symbols - 0 / 1Many physical reasons for choosing

Other useful bases 8 - octal16 - hexadecimal

Page 2: Number Systems

– 2 – 52011

Representing a number in base BRepresenting a number in base BGeneral expression :

A number U3 U2 U1 U0 in base B is effectively

U3x B3 + U2x B2 + U1 x B1 + U0 x B0

Examples : 234 in base 10 is

2 x 102 + 3 x 101 + 4 x 100

1011 in base 2 is

1 x 22 + 0 x 22

+ 1 x 21 + 1 x 20 = 1 x 101 +

1 x 100 in base 10

Page 3: Number Systems

– 3 – 52011

Why Don’t Computers Use Base 10?Why Don’t Computers Use Base 10?Implementing Electronically

Hard to store Hard to transmit Messy to implement digital logic functions

Binary Electronic Implementation Easy to store with bistable elements Reliably transmitted on noisy and inaccurate wires Straightforward implementation of arithmetic functions

0.0V

0.5V

2.8V

3.3V

0 1 0

Page 4: Number Systems

– 4 – 52011

Octal and hexadecimalOctal and hexadecimalOctal uses 0-7 for representing numbers

Hexadecimal uses 0-9, a, b, c, d, e and f as digits a = decimal 10, b=decimal 11 and so on

They are useful because translation from binary is easy

Consider 101100110101rewrite as 101 100 110 101 and you get 5465 in octalrewrite as 1011 0011 0101 and you get b35 in hex

Much more readable in octal and hex than in binary

Also much easier to calculate equivalent decimal value

It will really pay to learn to interpret hex numbers in this course

Page 5: Number Systems

– 5 – 52011

Encoding Byte ValuesEncoding Byte Values

Byte = 8 bits Binary 000000002 to 111111112

Decimal: 010 to 25510

Hexadecimal 0016 to FF16

Base 16 number representationUse characters ‘0’ to ‘9’ and ‘A’ to ‘F’Write FA1D37B16 in C as 0xFA1D37B

o Or 0xfa1d37b

0 0 00001 1 00012 2 00103 3 00114 4 01005 5 01016 6 01107 7 01118 8 10009 9 1001A 10 1010B 11 1011C 12 1100D 13 1101E 14 1110F 15 1111

HexDecimal

Binary

Page 6: Number Systems

– 6 – 52011

Machine WordsMachine Words

Machine Has “Word Size” Nominal size of integer-valued data

Including addresses Most current machines are 32 bits (4 bytes) or 64 bits

32 bits Limits addresses to 4GBBecoming too small for memory-intensive applications

High-end systems are 64 bits (8 bytes)Potentially address 1.8 X 1019 bytes

Machines support multiple data formatsFractions or multiples of word sizeAlways integral number of bytes

Page 7: Number Systems

– 7 – 52011

Data RepresentationsData Representations

Sizes of C Objects (in Bytes) C Data Type Compaq AlphaTypical 32-bitIntel IA32

int 4 4 4long int 8 4 4char 1 1 1short 2 2 2float 4 4 4double 8 8 8long double 8 8 10/12char * 8 4 4

o Or any other pointer

Page 8: Number Systems

– 8 – 52011

Byte OrderingByte Ordering

How should bytes within multi-byte word be ordered in memory?

Conventions Sun’s, Mac’s are “Big Endian” machines

Least significant byte has highest address Alphas, PC’s are “Little Endian” machines

Least significant byte has lowest address

Page 9: Number Systems

– 9 – 52011

Byte Ordering ExampleByte Ordering Example

Big Endian Least significant byte has highest address

Little Endian Least significant byte has lowest address

Example Variable x has 4-byte representation 0x01234567 Address given by &x is 0x100

0x100 0x101 0x102 0x103

01 23 45 67

0x100 0x101 0x102 0x103

67 45 23 01

Big Endian

Little Endian

01 23 45 67

67 45 23 01

Page 10: Number Systems

– 10 – 52011

Reading Byte-Reversed ListingsReading Byte-Reversed ListingsDisassembly

Text representation of binary machine code Generated by program that reads the machine code

Example Fragment Address Instruction Code Assembly Rendition 8048365: 5b pop %ebx 8048366: 81 c3 ab 12 00 00 add $0x12ab,%ebx 804836c: 83 bb 28 00 00 00 00 cmpl $0x0,0x28(%ebx)

Deciphering NumbersDeciphering Numbers Value: 0x12ab Pad to 4 bytes: 0x000012ab Split into bytes: 00 00 12 ab Reverse: ab 12 00 00

Page 11: Number Systems

– 11 – 52011

Representing IntegersRepresenting Integers

int A = 15213;int B = -15213;long int C = 15213;

Decimal: 15213

Binary: 0011 1011 0110 1101

Hex: 3 B 6 D

6D3B0000

Linux/Alpha A

3B6D

0000

Sun A

93C4FFFF

Linux/Alpha B

C493

FFFF

Sun B

Two’s complement representation(Covered later)

00000000

6D3B0000

Alpha C

3B6D

0000

Sun C

6D3B0000

Linux C

Page 12: Number Systems

– 12 – 52011

Representing PointersRepresenting Pointersint B = -15213;int *P = &B;

Alpha Address

Hex: 1 F F F F F C A 0

Binary: 0001 1111 1111 1111 1111 1111 1100 1010 0000

01000000

A0FCFFFF

Alpha P

Sun Address

Hex: E F F F F B 2 C Binary: 1110 1111 1111 1111 1111 1011 0010 1100

Different compilers & machines assign different locations to objects

FB2C

EFFF

Sun P

FFBF

D4F8

Linux P

Linux Address

Hex: B F F F F 8 D 4 Binary: 1011 1111 1111 1111 1111 1000 1101 0100

Page 13: Number Systems

– 13 – 52011

Representing FloatsRepresenting Floats

Float F = 15213.0;

IEEE Single Precision Floating Point Representation

Hex: 4 6 6 D B 4 0 0 Binary: 0100 0110 0110 1101 1011 0100 0000 0000

15213: 1110 1101 1011 01Not same as integer representation, but consistent across machines

00B46D46

Linux/Alpha F

B400

466D

Sun F

Can see some relation to integer representation, but not obvious

IEEE Single Precision Floating Point Representation

Hex: 4 6 6 D B 4 0 0 Binary: 0100 0110 0110 1101 1011 0100 0000 0000

15213: 1110 1101 1011 01

IEEE Single Precision Floating Point Representation

Hex: 4 6 6 D B 4 0 0 Binary: 0100 0110 0110 1101 1011 0100 0000 0000

15213: 1110 1101 1011 01

Page 14: Number Systems

– 14 – 52011

char S[6] = "15213";char S[6] = "15213";

Representing StringsRepresenting Strings

Strings in C Represented by array of characters Each character encoded in ASCII format

Standard 7-bit encoding of character setOther encodings exist, but uncommonCharacter “0” has code 0x30

o Digit i has code 0x30+i String should be null-terminated

Final character = 0

Compatibility Byte ordering not an issue

Data are single byte quantities Text files generally platform independent

Except for different conventions of line termination character(s)!

Linux/Alpha SSun S

3231

3135

3300

3231

3135

3300

Page 15: Number Systems

– 15 – 52011

Boolean AlgebraBoolean AlgebraDeveloped by George Boole in 19th Century Algebraic representation of logic

Encode “True” as 1 and “False” as 0AndAnd A&B = 1 when both A=1 and B=1

NotNot ~A = 1 when A=0

OrOr A|B = 1 when either A=1 or B=1

Exclusive-Or (Xor)Exclusive-Or (Xor) A^B = 1 when either A=1 or B=1, but not both

Page 16: Number Systems

– 16 – 52011

A

~A

~B

B

Connection when A&~B | ~A&B

Application of Boolean AlgebraApplication of Boolean AlgebraApplied to Digital Systems by Claude Shannon 1937 MIT Master’s Thesis Reason about networks of relay switches

Encode closed switch as 1, open switch as 0A&~B

~A&B = A^B

Page 17: Number Systems

– 17 – 52011

AlgebraAlgebra

Integer Arithmetic Addition is “sum” operation Multiplication is “product” operation – is additive inverse 0 is identity for sum 1 is identity for product

Boolean Algebra {0,1}, |, &, ~, 0, 1 forms a “Boolean algebra” Or is “sum” operation And is “product” operation ~ is “complement” operation (not additive inverse) 0 is identity for sum 1 is identity for product

Page 18: Number Systems

– 18 – 52011

CommutativityA | B = B | A A + B = B + AA & B = B & A A * B = B * A

Associativity(A | B) | C = A | (B | C) (A + B) + C = A +

(B + C)(A & B) & C = A & (B & C) (A * B) * C = A *

(B * C) Product distributes over sum

A & (B | C) = (A & B) | (A & C) A * (B + C) = A * B + B * C

Sum and product identitiesA | 0 = A A + 0 = AA & 1 = A A * 1 = A

Zero is product annihilatorA & 0 = 0 A * 0 = 0

Cancellation of negation~ (~ A) = A – (– A) = A

Boolean Algebra Boolean Algebra Integer Integer RingRing

Page 19: Number Systems

– 19 – 52011

Boolean: Sum distributes over product

A | (B & C) = (A | B) & (A | C) A + (B * C) (A + B) * (B + C)

Boolean: IdempotencyA | A = A A + A A

“A is true” or “A is true” = “A is true”

A & A = A A * A A Boolean: Absorption

A | (A & B) = A A + (A * B) A“A is true” or “A is true and B is true” = “A is true”

A & (A | B) = A A * (A + B) A Boolean: Laws of Complements

A | ~A = 1 A + –A 1“A is true” or “A is false”

Ring: Every element has additive inverseA | ~A 0 A + –A = 0

Boolean Algebra Boolean Algebra Integer Integer RingRing

Page 20: Number Systems

– 20 – 52011

Properties of & and ^Properties of & and ^Boolean Ring {0,1}, ^, &, , 0, 1 Identical to integers mod 2 is identity operation: (A) = A

A ^ A = 0

Property Boolean Ring Commutative sum A ^ B = B ^ A Commutative product A & B = B & A Associative sum (A ^ B) ^ C = A ^ (B ^ C) Associative product (A & B) & C = A & (B & C) Prod. over sum A & (B ^ C) = (A & B) ^ (B

& C) 0 is sum identity A ^ 0 = A 1 is prod. identity A & 1 = A 0 is product annihilator A & 0 = 0 Additive inverse A ^ A = 0

Page 21: Number Systems

– 21 – 52011

Relations Between OperationsRelations Between Operations

DeMorgan’s Laws Express & in terms of |, and vice-versa

A & B = ~(~A | ~B)o A and B are true if and only if neither A nor B is false

A | B = ~(~A & ~B)o A or B are true if and only if A and B are not both false

Exclusive-Or using Inclusive OrA ^ B = (~A & B) | (A & ~B)

o Exactly one of A and B is trueA ^ B = (A | B) & ~(A & B)

o Either A is true, or B is true, but not both

Page 22: Number Systems

– 22 – 52011

General Boolean AlgebrasGeneral Boolean Algebras

Operate on Bit Vectors

Operations applied bitwise

All of the Properties of Boolean Algebra Apply

01101001& 01010101 01000001

01101001| 01010101 01111101

01101001^ 01010101 00111100

~ 01010101 10101010 01000001 01111101 00111100 10101010

Page 23: Number Systems

– 23 – 52011

Bit-Level Operations in CBit-Level Operations in COperations &, |, ~, ^ Available in C Apply to any “integral” data type

long, int, short, char View arguments as bit vectors Arguments applied bit-wise

Examples (Char data type) ~0x41 --> 0xBE

~010000012 --> 101111102

~0x00 --> 0xFF~000000002 --> 111111112

0x69 & 0x55 --> 0x41011010012 & 010101012 --> 010000012

0x69 | 0x55 --> 0x7D011010012 | 010101012 --> 011111012

Page 24: Number Systems

– 24 – 52011

Contrast: Logic Operations in CContrast: Logic Operations in CContrast to Logical Operators &&, ||, !

View 0 as “False”Anything nonzero as “True”Always return 0 or 1Early termination

Examples (char data type) !0x41 --> 0x00 !0x00 --> 0x01 !!0x41 --> 0x01

0x69 && 0x55 --> 0x01 0x69 || 0x55 --> 0x01 p && *p (avoids null pointer access)

Page 25: Number Systems

– 25 – 52011

Shift OperationsShift Operations

Left Shift: x << y Shift bit-vector x left y positions

Throw away extra bits on leftFill with 0’s on right

Right Shift: x >> y Shift bit-vector x right y positions

Throw away extra bits on right

Logical shiftFill with 0’s on left

Arithmetic shiftReplicate most significant bit on right

Useful with two’s complement integer representation

01100010Argument x

00010000<< 3

00011000Log. >> 2

00011000Arith. >> 2

10100010Argument x

00010000<< 3

00101000Log. >> 2

11101000Arith. >> 2

0001000000010000

0001100000011000

0001100000011000

00010000

00101000

11101000

00010000

00101000

11101000

Page 26: Number Systems

– 26 – 52011

Cool Stuff with XorCool Stuff with Xor

void funny(int *x, int *y)void funny(int *x, int *y){{ *x = *x ^ *y; /* #1 */*x = *x ^ *y; /* #1 */ *y = *x ^ *y; /* #2 */*y = *x ^ *y; /* #2 */ *x = *x ^ *y; /* #3 */*x = *x ^ *y; /* #3 */}}

Bitwise Xor is form of addition

With extra property that every value is its own additive inverse A ^ A = 0

BABegin

BA^B1

(A^B)^B = AA^B2

A(A^B)^A = B3

ABEnd

*y*x

Page 27: Number Systems

– 27 – 52011

Storing negative integersStoring negative integers

sign-magnitude of n bits in the word, the most significant bit is sign

1 indicates negative number, 0 a positive number remaining n-1 bits determine the magnitude 0 has two representations The range of valid values is -(2(n-1)-1) to (2(n-1)-1)

Exampleso 8 bit words can represent -127 to +127o 16 bit words can represent -32767 to +32767

AdvantagesVery straightforwardSimple to understand

Disadvantagedifferent machinery for addition and subtractionmultiple representations of zero.

Page 28: Number Systems

– 28 – 52011

One’s complement The most significant bit is effectively sign bit The range of numbers the same as signed magnitude

Positive numbers stored as such Negative numbers are bit-wise inverted Example

4 bit storage – range -7 to +7o -7 = 1000, +7 = 0111, +3 = 0011, -4 = 1011

8 bit storage – range = -127 t0 128Zero has two representations :

o 0000 0000o 1111 1111

Hardly ever used for actual storageUseful for understanding 2’s compliment and some other operations

Page 29: Number Systems

– 29 – 52011

Two’s ComplementTwo’s Complement

short int x = 15213; short int y = -15213;

C short 2 bytes long

Sign Bit For 2’s complement, most significant bit indicates sign

0 for nonnegative1 for negative

B2T (X ) xw 12w 1 xi 2

i

i0

w 2

B2U(X ) xi 2i

i0

w 1

Unsigned Two’s Complement

SignBit

Decimal Hex Binaryx 15213 3B 6D 00111011 01101101y -15213 C4 93 11000100 10010011

Page 30: Number Systems

– 30 – 52011

Two’s compliment is effectively one’s compliment with a “1” added to it. It is a number’s additive inverse

Number added to its own two’s compliment results in zero

Same circuitry can do arithmetic operations for positive and negative numbers

The range is (-2n-1) to (2n-1-1)

Example : 13 + (-6)13 in 4 bit binary is 1101

6 is 0110It’s one’s complement is 1001Two’s complement is 1010

Add 1101 and 1010 in 4 bits, ignoring the carryThe answer is 0111, with carry of 1, which in decimal is 7

Page 31: Number Systems

– 31 – 52011

Power-of-2 Multiply with ShiftOperation

u << k gives u * 2k

Both signed and unsigned

Examples u << 3 == u * 8 u << 5 - u << 3 == u * 24 Most machines shift and add much faster than multiply

• • •

0 0 1 0 0 0•••

u

2k*

u · 2kTrue Product: w+k bits

Operands: w bits

Discard k bits: w bits

UMultw(u , 2k)

•••

k

• • • 0 0 0•••

TMultw(u , 2k)

0 0 0••••••

Page 32: Number Systems

– 32 – 52011

Unsigned Power-of-2 Divide with ShiftQuotient of Unsigned by Power of 2

u >> k gives u / 2k Uses logical shift

Division Computed Hex Binaryx 15213 15213 3B 6D 00111011 01101101x >> 1 7606.5 7606 1D B6 00011101 10110110x >> 4 950.8125 950 03 B6 00000011 10110110x >> 8 59.4257813 59 00 3B 00000000 00111011

0 0 1 0 0 0•••

u

2k/

u / 2kDivision:

Operands:•••

k••• •••

•••0 ••• •••

u / 2k •••Result:

.

Binary Point

0 •••

Page 33: Number Systems

– 33 – 52011

Signed Power-of-2 Divide with ShiftQuotient of Signed by Power of 2

x >> k gives x / 2k Uses arithmetic shift Rounds wrong direction when u < 0

0 0 1 0 0 0•••

x

2k/

x / 2kDivision:

Operands:•••

k••• •••

•••0 ••• •••

RoundDown(x / 2k) •••Result:

.

Binary Point

0 •••

Division Computed Hex Binaryy -15213 -15213 C4 93 11000100 10010011y >> 1 -7606.5 -7607 E2 49 11100010 01001001y >> 4 -950.8125 -951 FC 49 11111100 01001001y >> 8 -59.4257813 -60 FF C4 11111111 11000100

Page 34: Number Systems

– 34 – 52011

Correct Power-of-2 DivideQuotient of Negative Number by Power of 2

Want x / 2k (Round Toward 0) Compute as (x+2k-1)/ 2k

In C: (x + (1<<k)-1) >> kBiases dividend toward 0

Case 1: No rounding

Divisor:

Dividend:

0 0 1 0 0 0•••

u

2k/

u / 2k

•••

k

1 ••• 0 0 0•••

1 •••0 1 1••• .

Binary Point

1

0 0 0 1 1 1•••+2k +–1 •••

1 1 1•••

1 ••• 1 1 1•••

Biasing has no effect

Page 35: Number Systems

– 35 – 52011

Correct Power-of-2 Divide (Cont.)

Divisor:

Dividend:

Case 2: Rounding

0 0 1 0 0 0•••

x

2k/

x / 2k

•••

k1 ••• •••

1 •••0 1 1••• .

Binary Point

1

0 0 0 1 1 1•••+2k +–1 •••

1 ••• •••

Biasing adds 1 to final result

•••

Incremented by 1

Incremented by 1

Page 36: Number Systems

– 36 – 52011

Fractional Binary Numbers

Representation Bits to right of “binary point” represent fractional powers of 2 Represents rational number:

bi bi–1 b2 b1 b0 b–1 b–2 b–3 b–j• • •• • • .

124

2i–1

2i

• • •

• • •1/21/41/8

2–j

bk 2k

k j

i

Page 37: Number Systems

– 37 – 52011

Frac. Binary Number ExamplesValue Representation

5-3/4 101.112

2-7/8 10.1112

63/64 0.1111112

Observations Divide by 2 by shifting right Multiply by 2 by shifting left Numbers of form 0.111111…2 just below 1.0

1/2 + 1/4 + 1/8 + … + 1/2i + … 1.0

Page 38: Number Systems

– 38 – 52011

Representable NumbersLimitation

Can only exactly represent numbers of the form x/2k

Other numbers have repeating bit representations

Value Representation1/3 0.0101010101[01]…2

1/5 0.001100110011[0011]…2

1/10 0.0001100110011[0011]…2