Integer Representation and Binary Arithmetic

Integer Representation

• Bit-- Binary Digit
• 1 byte = 8 bits
• 1 word = N bytes, take N to be 2 (e.g., 16 bit machine)
• Integer takes up 2 bytes; can be signed or unsigned.

Unsigned Integers

• Can represent whole numbers from 0 to 65,535
• (0 to 216 - 1).
• In binary, this is from
• 02 to 11111111111111112
• Internally, binary representation of decimal value as 16 bits.

Signed Integers

• Need to reserve one bit for the sign.
• Three ways:
• Sign-Magnitude
• 1's Complement
• 2's Complement

Sign-Magnitude

• Uses most significant bit of the word to represent the sign.
• 0 - Positive
• 1 - Negative.
• Rest of the number is encoded in magnitude part
37 = 00000000 00100101
-37 = 10000000 00100101
6712 = 00011010 00111000
-6712 = 10011010 00111000
• Can represent numbers from -32,767 to 32,767.
• -215+1 .. 215-1
• But, two representations for zero:
•  0 = 00000000 00000000
-0 = 10000000 00000000
• Arithmetic can be cumbersome.

1's Complement

• Negative number is stored as bit-wise complement of corresponding positive number.
• Leftmost bit of positive number is 0. That of negative number is 1.
•  196 = 00000000 11000100
-196 = 11111111 00111011
• Can represent numbers from -32,767 to 32,767.
• -215+1 .. 215-1
• Arithmetic is easier than sign-magnitude.
• But, still have two representations for zero:
•  0 = 00000000 00000000
-0 = 11111111 11111111

2's Complement

• Modern Method
• Positive number represented in same way as other two methods
• Negative number obtained by taking 1's Complement of positive number and adding 1.
6713 = 00011000 00011101
1's Comp = 11100111 11100010
2's Comp = 11100111 11100011
• Word integer can represent numbers from -32,768 to 32,767.
• -215 .. 215-1
• Byte integer can represent numbers from -128 to 127.
• -27 .. 27-1
• One version of zero:
• 00000000 00000000

Conversion of Byte Integer to Word

• Sign Extension
• Copy sign bit of the byte into all the bits of the upper byte of the word.
•  37 = 00100101 -> 00000000 00100101
-37 = 11011011 -> 11111111 11011011
• cbw
• converts the signed byte in AL to a word in AX

Conversion of Word Integer to Byte

• Remove upper byte of word. Retain only the lower byte.
• Meaningful only if original number can be represented by a byte.

Integer Arithmetic (1's Comp and 2's Comp)

• Addition: Simply add the two binary representations.
• Subtraction: Find negative of one number, add to the second.

Addition in 1's Comp

• Add binary representations of the two numbers.
• If there is a carry, add it back in on the right side.
•     51    00110011
+ (-37) + 11011010
----------
1 00001101
+ 1
----------
14    00001110

Addition in 2's Comp

• Add binary representations of the two numbers.
• Disregard the carry.
•     51    00110011
+ (-37) + 11011011
----------
14  1 00001110

Overflow

• If two numbers have different signs, their sum will never overflow.
• If they have the same sign, they might overflow.
• Overflow has occurred if sign of result is different than sign of addends.