operations on bits arithmetic operations –addition and subtraction –sign extension –overflow...

26
Operations on Bits Arithmetic Operations Addition and subtraction Sign Extension Overflow Logic Operations AND OR NOT XOR 1

Upload: gavin-dixon

Post on 20-Jan-2016

221 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Operations on Bits Arithmetic Operations –Addition and subtraction –Sign Extension –Overflow Logic Operations –AND –OR –NOT –XOR 1

Operations on Bits

• Arithmetic Operations– Addition and subtraction– Sign Extension– Overflow

• Logic Operations– AND– OR– NOT– XOR

1

Page 2: Operations on Bits Arithmetic Operations –Addition and subtraction –Sign Extension –Overflow Logic Operations –AND –OR –NOT –XOR 1

Binary Addition Rules

• 0 + 0 = 0• 0 + 1 = 1• 1 + 0 = 1• 1 + 1 = 0, with a carry bit to the next more

significant bit, Sum = 0 , carry = 1

2

Page 3: Operations on Bits Arithmetic Operations –Addition and subtraction –Sign Extension –Overflow Logic Operations –AND –OR –NOT –XOR 1

Binary Subtraction Rules

• 0 - 0 = 0• 1 - 0 = 1• 1 - 1 = 0• 0 - 1 = 1, with a borrow bit from the next

more significant bit

3

Page 4: Operations on Bits Arithmetic Operations –Addition and subtraction –Sign Extension –Overflow Logic Operations –AND –OR –NOT –XOR 1

Single Bit Binary Addition• Given two binary digits (X and Y) and a carry in, we get

the sum (S) and the carry out (C)

Carry in = 0

Carry in = 1

X

+ Y

C S

0

+ 0

0 0

0

+ 1

0 1

1

+ 0

0 1

1

+ 1

1 0

1

0

+ 0

0 1

1

0

+ 1

1 0

1

1

+ 0

1 0

1

1

+ 1

1 1

1

X

+ Y

C S

Page 5: Operations on Bits Arithmetic Operations –Addition and subtraction –Sign Extension –Overflow Logic Operations –AND –OR –NOT –XOR 1

Multiple Bit Binary Addition• Start with the least significant bit (rightmost bit)

• Add each pair of bits

• Include the carry in the addition, if present

0 0 0 1 1 1 0 1

0 0 1 1 0 1 1 0

+

(54)

(29)

(83)

1carry

01234bit position: 567

11 1

0 1 0 1 0 0 1 1

Page 6: Operations on Bits Arithmetic Operations –Addition and subtraction –Sign Extension –Overflow Logic Operations –AND –OR –NOT –XOR 1

Single Bit Binary Subtraction

• Given two binary digits (X and Y), and a borrow in we get the

difference (D) and the borrow out (B) shown as -1

Borrow in = 0

Borrow in = -1

X

– Y

B D

0

– 0

0 0

0

– 1

-1 1

1

– 0

0 1

1

– 1

0 0

-1

0

– 0

-1 1

-1

0

– 1

-1 0

-1

1

– 0

0 0

-1

1

– 1

-1 1

-1

X

– Y

B D

Page 7: Operations on Bits Arithmetic Operations –Addition and subtraction –Sign Extension –Overflow Logic Operations –AND –OR –NOT –XOR 1

Multiple Bit Binary Subtraction• Start with the least significant bit (rightmost bit)

• Subtract each pair of bits

• Include the borrow in the subtraction, if present

0 0 0 1 1 1 0 1

0 0 1 1 0 1 1 0

(54)

(29)

(25)

01234bit position: 567

-1 -1

0 0 0 1 1 0 0 1

borrow -1

Page 8: Operations on Bits Arithmetic Operations –Addition and subtraction –Sign Extension –Overflow Logic Operations –AND –OR –NOT –XOR 1

Hexadecimal Addition• Start with the least significant hexadecimal digits

• Let Sum = summation of two hex digits

• If Sum is greater than or equal to 16– Sum = Sum – 16 and Carry = 1

• Example:

A F C D B0

1

1

1

1 C 3 7 2 8 6 A9 3 9 5 E 8 4 B+ A + B = 10 + 11 = 21

Since 21 ≥ 16Sum = 21 – 16 = 5Carry = 15

1carry:

Page 9: Operations on Bits Arithmetic Operations –Addition and subtraction –Sign Extension –Overflow Logic Operations –AND –OR –NOT –XOR 1

Hexadecimal Subtraction• Start with the least significant hexadecimal digits

• Let Difference = subtraction of two hex digits

• If Difference is negative– Difference = 16 + Difference and Borrow = -1

• Example:

8 8 1 104

-1

9 C 3 7 2 8 6 51 3 9 5 E 8 4 B- Since 5 < B, Difference < 0

Difference = 16+5–11 = 10Borrow = -1A

-1borrow

A

-1

Page 10: Operations on Bits Arithmetic Operations –Addition and subtraction –Sign Extension –Overflow Logic Operations –AND –OR –NOT –XOR 1

10

Examples

add 010010112 to 001011102 using signed-magnitude arithmetic.

Using signed magnitude binary arithmetic, find the sum of - 46 and - 25.

Signed-Magnitude Arithmetic

Page 11: Operations on Bits Arithmetic Operations –Addition and subtraction –Sign Extension –Overflow Logic Operations –AND –OR –NOT –XOR 1

11

• The sign of the result gets the sign of the number that is larger.

• Example: Using signed magnitude binary arithmetic, find the sum of 46 and - 25.

Note the “borrows” from the second and sixth bits.

Signed-Magnitude Arithmetic

Page 12: Operations on Bits Arithmetic Operations –Addition and subtraction –Sign Extension –Overflow Logic Operations –AND –OR –NOT –XOR 1

12

• With one’s complement addition, the carry bit is “carried around” and added to the sum.– Example: Using one’s

complement binary arithmetic, find the sum of 48 and - 19

We note that 19 in binary is 00010011,

so -19 in one’s complement is: 11101100.

One’s Complement Arithmetic

Page 13: Operations on Bits Arithmetic Operations –Addition and subtraction –Sign Extension –Overflow Logic Operations –AND –OR –NOT –XOR 1

Arithmetic Operations with Signed Numbers

• Using the signed number notation with negative numbers in 2’s complement form simplifies addition and subtraction of signed numbers.

• Rules for addition: Add the two signed numbers. Discard any final carries. The result is in signed form.

• Examples:

00011110 = +30 00001111 = +15

00101101= +45

00001110 = +14 11101111 = -17

11111101 = -3

11111111 = -1 11111000 = -811110111= -9

Discard carry

1

Page 14: Operations on Bits Arithmetic Operations –Addition and subtraction –Sign Extension –Overflow Logic Operations –AND –OR –NOT –XOR 1

Arithmetic Operations with Signed Numbers

• Rules for subtraction: 2’s complement the subtrahend and add the numbers. Discard any final carries. The result is in signed form.

• Examples:

00001111

Discard carry

2’s complement subtrahend and add:

00011110 = +3011110001 = -15

0001111000001111-

0000111011101111

11111111 11111000- -

00011111 00000111

Discard carry

11111111 = -100001000 = +8

00001110 = +1400010001 = +17

1 1

(+30) –(+15)

(+14) –(-17)

(-1) –(-8)

= +15 = +31 = +7

Page 15: Operations on Bits Arithmetic Operations –Addition and subtraction –Sign Extension –Overflow Logic Operations –AND –OR –NOT –XOR 1

Overflow• If the number of bits required for the answer is

exceeded, overflow will occur.• An overflow can occur only when both numbers

are positive or both numbers are negative.• The overflow will be indicated by an incorrect

sign bit.01000000 = +128 01000001 = +129

10000001 = -126

10000001 = -127 10000001 = -127

100000010 = +2

Wrong! The answer is incorrect and the sign bit has changed.

Discard carry

Page 16: Operations on Bits Arithmetic Operations –Addition and subtraction –Sign Extension –Overflow Logic Operations –AND –OR –NOT –XOR 1

16

• Rule for detecting an overflow condition in signed numbers: When the “carry in” and the “carry out” of the sign bit differ, overflow has occurred.

Overflow Detection in Signed Numbers

Page 17: Operations on Bits Arithmetic Operations –Addition and subtraction –Sign Extension –Overflow Logic Operations –AND –OR –NOT –XOR 1

Carry and Overflow• Carry is important when …

– Adding or subtracting unsigned integers– Indicates that the unsigned sum is out of range– Either < 0 or >maximum unsigned n-bit value

• Overflow is important when …– Adding or subtracting signed integers– Indicates that the signed sum is out of range

• Overflow occurs when– Adding two positive numbers and the sum is negative– Adding two negative numbers and the sum is positive– Can happen because of the fixed number of sum bits

Page 18: Operations on Bits Arithmetic Operations –Addition and subtraction –Sign Extension –Overflow Logic Operations –AND –OR –NOT –XOR 1

0 1 0 0 0 0 0 0

0 1 0 0 1 1 1 1+

1 0 0 0 1 1 1 1

79

64

143(-113)

Carry = 0 Overflow = 1

1

1 0 0 1 1 1 0 1

1 1 0 1 1 0 1 0+

0 1 1 1 0 1 1 1

218 (-38)

157 (-99)

119

Carry = 1 Overflow = 1

111

Carry and Overflow Examples• We can have carry without overflow and vice-versa• Four cases are possible (Examples are 8-bit numbers)

1 1 1 1 1 0 0 0

0 0 0 0 1 1 1 1+

0 0 0 0 0 1 1 1

15

248 (-8)

7

Carry = 1 Overflow = 0

11111

0 0 0 0 1 0 0 0

0 0 0 0 1 1 1 1+

0 0 0 1 0 1 1 1

15

8

23

Carry = 0 Overflow = 0

1

Page 19: Operations on Bits Arithmetic Operations –Addition and subtraction –Sign Extension –Overflow Logic Operations –AND –OR –NOT –XOR 1

20

• We can do binary multiplication and division by 2 very easily using an arithmetic shift operation

• A left arithmetic shift inserts a 0 in for the rightmost bit and shifts everything else left one bit; in effect, it multiplies by 2

• A right arithmetic shift shifts everything one bit to the right, but copies the sign bit; it divides by 2

Binary Multiplication and Division Using Shifting

Page 20: Operations on Bits Arithmetic Operations –Addition and subtraction –Sign Extension –Overflow Logic Operations –AND –OR –NOT –XOR 1

21

Example:Multiply the value 11 (expressed using 8-bit signed two’s complement representation) by 2.

We start with the binary value for 11:

00001011 (+11)

We shift left one place, resulting in:

00010110 (+22)

The sign bit has not changed, so the value is valid.

To multiply 11 by 4, we simply perform a left shift twice.

Binary Multiplication and Division Using Shifting

Page 21: Operations on Bits Arithmetic Operations –Addition and subtraction –Sign Extension –Overflow Logic Operations –AND –OR –NOT –XOR 1

22

Example:Multiply the value 66 (expressed using 8-bit signed two’s complement representation) by 2.

We start with the binary value for 66:

01000010 (+66)

We shift left one place, resulting in:

10000100 (-4)

The sign bit has changed, so overflow has occurred.

Binary Multiplication and Division Using Shifting

Page 22: Operations on Bits Arithmetic Operations –Addition and subtraction –Sign Extension –Overflow Logic Operations –AND –OR –NOT –XOR 1

23

Example:Divide the value 12 (expressed using 8-bit signed two’s complement representation) by 2.We start with the binary value for 12:

00001100 (+12)We shift right one place, resulting in:

00000110 (+6)(Remember, we carry the sign bit to the left as we shift.)

To divide 12 by 4, we right shift twice.

Binary Multiplication and Division Using Shifting

Page 23: Operations on Bits Arithmetic Operations –Addition and subtraction –Sign Extension –Overflow Logic Operations –AND –OR –NOT –XOR 1

24

Example:Divide the value -14 (expressed using 8-bit signed two’s complement representation) by 2.We start with the two’s complement representation for -14:

11110010 (-14)We shift right one place, resulting in:

11111001 (-7)(Remember, we carry the sign bit to the left as we shift.)

Binary Multiplication and Division Using Shifting

Page 24: Operations on Bits Arithmetic Operations –Addition and subtraction –Sign Extension –Overflow Logic Operations –AND –OR –NOT –XOR 1

Sign Bit• Highest bit indicates the sign

• 1 = negative

• 0 = positive

For Hexadecimal Numbers, check most significant digit

If highest digit is > 7, then value is negative

Examples: 8A and C5 are negative bytes

B1C42A00 is a negative word (32-bit signed integer)

1 1 1 1 0 1 1 0

0 0 0 0 1 0 1 0

Sign bit

Negative

Positive

Page 25: Operations on Bits Arithmetic Operations –Addition and subtraction –Sign Extension –Overflow Logic Operations –AND –OR –NOT –XOR 1

Sign Extension

Step 1: Move the number into the lower-significant bits

Step 2: Fill all the remaining higher bits with the sign bit• This will ensure that both magnitude and sign are correct• Examples

– Sign-Extend 10110011 to 16 bits

– Sign-Extend 01100010 to 16 bits

• Infinite 0s can be added to the left of a positive number• Infinite 1s can be added to the left of a negative number

10110011 = -77 11111111 10110011 = -77

01100010 = +98 00000000 01100010 = +98

Page 26: Operations on Bits Arithmetic Operations –Addition and subtraction –Sign Extension –Overflow Logic Operations –AND –OR –NOT –XOR 1

Logic Operations on Bits

• The AND operation– 0 and 0 = 0– 0 and 1 = 0– 1 and 0 = 0– 1 and 1 = 1

• The OR operation– 0 or 0 = 0– 0 or 1 = 1– 1 or 0 = 1– 1 or 1 = 1

27

• The NOT operation– Not 0 = 1– Not 1 = 0

• The XOR operation– 0 xor 0 = 0– 0 xor 1 = 1– 1 xor 0 = 1– 1 xor 1 = 0