binary arithmetic

28
Binary Arithmetic Math For Computers

Upload: rafael

Post on 06-Jan-2016

26 views

Category:

Documents


0 download

DESCRIPTION

Binary Arithmetic. Math For Computers. Huh?. Binary numbers are NUMBERS That means you can add, subtract, multiply, and divide 2 + 2 = 4 In Binary: 10 + 10 = 100 So you COULD just convert all numbers to decimal, do the math, and then convert the answer back… But I don’t care about the math - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Binary Arithmetic

Binary Arithmetic

Math For Computers

Page 2: Binary Arithmetic

Huh?

• Binary numbers are NUMBERS• That means you can add, subtract, multiply,

and divide• 2 + 2 = 4• In Binary: 10 + 10 = 100• So you COULD just convert all numbers to

decimal, do the math, and then convert the answer back…

• But I don’t care about the math• I want you to understand how a computer

does it!

Page 3: Binary Arithmetic

Addition

• Similar to addition of large decimal numbers

• You need to “carry” when a number gets too large for a single digit

• In binary, that’s 1 + 1 = 10• (or 0, carry a 1)• If you have 1 + 1 + 1 = 11• (or 1, carry a 1)

11_11

0011+

101111

1110

carried bits

Page 4: Binary Arithmetic

Addition Practice

• 1110 + 1010• 1001 + 111• 1111 0000 + 1111• 111 1000 + 1111• 1000 1100 + 1100 0110• Take a few minutes to try them• (answers in the PowerPoint Notes)

Page 5: Binary Arithmetic

Overflow• 1111 1111 + 100 = 1 0000 0011• The answer is more than 1 byte

large• A computer typically will make it

DROP THE EXTRA BIT ON THE LEFT• The computer’s answer: 11

(binary) or 3 (decimal)• This is called an overflow error• Sometimes overflow behavior is

undefined (unpredictable)

Page 6: Binary Arithmetic

Why overflow happens• A computer’s processor stores information

in something called a register.• Registers have a limited space – they can

only store a certain number of bits.• If a processor does a calculation and the

answer exceeds the capacity of the register, then the extra bits are dropped

• Modern registers are usually 16 or 32 bits, but for this class we’ll only use 8 bits.

Page 7: Binary Arithmetic

Addition Practice Pt. 2

• Do the math, but give the answer an 8-bit computer would give

• 1111 1111 + 1010• 1010 1100 + 111 1111• 1000 0000 + 1000 0000• 1101 1010 + 1110 0110• (answers in the PowerPoint Notes)

Page 8: Binary Arithmetic

Negative Numbers for Computers

• A computer needs a way to represent negative numbers (there’s no “negative sign” in the comp)

• One Idea:• Use one of the bits to indicate the

sign of the number, instead of using it as a digit

Page 9: Binary Arithmetic

Sign Bit (the bad way)

• So the 1st bit of a number indicates it’s sign

• Examples:• 00000010 is 2• 10000010 is -2

Page 10: Binary Arithmetic

Problem with sign bit system

• 2 zeros is a waste (10000000 and 00000000 are both zero)

• Computer processors can’t subtract without special instructions

• We need a way to subtract by adding!

• Huh?

Page 11: Binary Arithmetic

Twos Complement• Consider this idea: a binary digit “place

value” could be negative!

• So the above number is actually 3 (the positive bits) minus 8 = -5

• 1000 in the above system actually represents the decimal number -8

• The example above is 4 bits. Most problems for this class will assume 8 bits.

negative eights

fours twos ones

1 0 1 1

Page 12: Binary Arithmetic

Twos Complement cont.• REALLY IMPORTANT: Notice that

with both negative number systems you need to know the number of total bits you are going to use!

• We’ll assume 8 bits for simplicity.• What is the value of the “negative

place”?• What is the new range of

numbers? (Hint: It’s not 0 – 255 anymore)

Page 13: Binary Arithmetic

Calculating Twos Complement

• Example: -1 in (8-bit) twos complement is1111 1111

• Still confused?• Remember, everything is the same

except for a negative place value!

• -128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = -1

• Btw, a “normal” binary number (where 1111 1111 = 255) is called “unsigned”

-128 64 32 16 8 4 2 1

1 1 1 1 1 1 1 1

Page 14: Binary Arithmetic

Calculating Twos Complement Pt. 2

• Shortcut: Convert the positive binary number, switch all the bits (0s become 1s, 1s become 0s), then add 1

• It only doesn’t work for -128 (no positive number)

• Try some!Set 1• -127• -23• -8• -100

Set 2• -5• -117• -52• -12

Page 15: Binary Arithmetic

Actually Subtracting, finally• Once you’ve got Twos Complement

figured out, subtracting is IDENTICAL TO ADDING (but now using our twos complement numbers)

• Example: Decimal 100 - 20• Binary: 0110 0100 - 0001 0100• 2s complement of 20: 1110 1100

• Overflow bit is dropped, as usual• 0101 0000 is… 80• So this 2s complement system USES

overflow

0110 0100+1110 11001 0101 0000

Page 16: Binary Arithmetic

Practice Excercises

• Do in Binary (know how to do decimal conversions, 2s complement conversions, and binary addition)

Set 1• 12 – 2• 66 – 30• 35 – 44

Set 2• 50 - 10• 2 - 1• 127 - 128

Page 17: Binary Arithmetic

Just to be clear:• If you have a binary number • like 1101 0110• It could be 214, or -42• There’s no way to tell if it’s negative

just by looking at it!• Assume it is positive, unless the

problem states otherwise.

Page 18: Binary Arithmetic

Multiplication & Division

• We’ll just talk about multiplying and dividing by the powers of 2

• This is called “shifting”• Just like when you multiply or divide by 10,

you just shift the decimal point• In binary, when you multiply or divide by 2,

you shift the “binary point”• 4 * 2 = 8• 100 * 10 = 1000• 4 / 2 = 2• 100 / 10 = 10

Page 19: Binary Arithmetic

Shifting Details• Multiplying can also be called left-shifting• Dividing: right-shifting• Left-Shifting can give you the overflow error• 1000 0000 * 10 = 1 0000 0000• For 2s complement negative numbers,

overflow will give really weird results• Again, the leftmost bit is dropped• Right-shift is DIFFERENT FOR TWOS

COMPLEMENT vs. unsigned binary numbers• Unsigned: shift in a 0 for the leftmost bit• 2s comp: shift in a COPY of the leftmost bit

Page 20: Binary Arithmetic

Shifting Diagram

1111 1111

Left-Shifting by 2 (multiply by 4)

11 1111 1100

These two 1s are dropped and disappear

due to overflow

1111 1111

Right-Shifting by 2 (divide by 4)

1111 1111 11

0011 1111 11

TwosComplement

Unsigned

Two copies of the 1 were shifted in on the left. If the leftmost bit was 0, two 0s would have been shifted in.

0s are always shifted in for unsigned numbers

These 1s are dropped!

Page 21: Binary Arithmetic

More Shifting ExamplesUnsigned numbers1011 0111 * 10 = 0110 1110 (overflow)1111 1111 * 100 = 1111 1100 (overflow)0001 1111 * 1000 = 1111 1000

1000 0000 / 1 0000 = 0000 10000011 0010 / 10 = 0001 10010001 0011 / 100 = 0000 0100 (?????)19 / 4 = 4So when you divide, you lose precision (the computer will drop bits that go off the right side – this means the answer is always rounded down towards -∞)

Twos Complement1111 1111 * 10 = 1111 11101000 0001 * 10 = 0000 0010 (overflow!)-127 * 2 = 2…?

1001 1100 / 100 = 1110 0111

Instead of 0s, 1s were shifted

in on the left because that

was the leftmost bit of

the original byte

Page 22: Binary Arithmetic

Fancy Shifting Animation: Multiplication

Also called left-shifting (look at the

animation)

This red box is a register

Lets put some bits into the register (8 bits)

0 1 1 0 1 0 1 1Now the processor gets an instruction to multiply this number by 8

So the bits shift to the left by 3 places (because 8 is the 3rd power of 2)

0 0 0

And the new empty spaces are filled with zerosAnd the bits that went out of the register are dropped because of overflow

Notice that we won’t get the correct answer, because of overflow. If the original number was smaller and had three zeros on the left, then the overflow would have only dropped zeros, and the answer would be accurate.

View this slide in a

slide show!

Page 23: Binary Arithmetic

Negative Number Multiplication Overflow

For Negative numbers, be aware that overflow will yield some strange results

1 0 1 0 1 1 0 1Take this 8-bit negative binary number: 10101101 = -83 (or positive 173)

Let’s multiply by 2. This means we left-shift by 1.

0The computer erases the bit that overflowed and puts in a zero on the right, like it’s supposed to. But the new number is 01011010, which equals 90! This happened because the lower limit of 8-bit twos complement negative numbers is -128. However, -83 * 2 would have gone below that.

View this slide in a

slide show!

Page 24: Binary Arithmetic

Fancy Shifting Animation: Division

Also called right-shifting (look at the

animation)

1 0 1 0 1 0 1 1Dividing by powers of 2 is very similar to multiplying. Here, we have our original binary number in the register. (10101011 = 171 OR -85)

View this slide in a

slide show!

Let’s try dividing by 4. When that happens, the number in the register will shift to the right by 2 places. (4 is the 2nd power of 2)

The computer drops the bits that went out of the register to the right. If the original number was positive (171), then the computer will put zeros on the left. The final answer is: 42. Notice that this isn’t a totally accurate answer (it should be 42.75) Because the computer dropped some bits we lost precision. Basically, the computer will always round down.

0 0If the original number was negative (-85), then the only difference would be that ones come in on the left side instead of zeros. This time our answer is -22. It should be -21.75, but the computer rounded down again. Just remember that when you round a negative number DOWN, it becomes more negative!

1 1

Page 25: Binary Arithmetic

Microsoft CalculatorIt’s actually useful for this binary stuffUse it to double-check and test yourselfPut it into Scientific mode (under view) and you’ll

see buttons for decimal, binary, hex, and octal

Page 26: Binary Arithmetic

Calculator Cont.• If you click on the decimal (Dec)

button and then enter a negative decimal number, then click the Binary (Bin) button, you’ll see that negative number in Twos Complement form

• If you do any arithmetic in Binary, and the Byte button is activated, you’ll see the “computer’s answer” (overflow)

• You can then click over to Decimal to see what that number would be

Page 27: Binary Arithmetic

Shifting Excercises• Convert to Binary, then give the computer’s

answers• Use Calc for the initial conversions and

answer-checking• Btw, I use an asterisk (*) for multiplication

-50 * 212 * 478 * 4-100 * 2

10 / 2-120 / 812 / 8-12 / 4

Page 28: Binary Arithmetic

Restating the Obvious• The MATH ISN’T IMPORTANT. I can get

the answers from a calculator.• Understanding these processes gives

you an idea of how the computer works.• If the only thing you understand is that

computers are actually pretty simple machines that need lots of instructions to work properly, then you’re doing pretty good (ok, you won’t so well on the test if you can’t do the calculations, but at least you have the general idea)