Homework Hints Algorithms
Converting Positive Numbers Base 2 to base 16 Base 16 to base 2 Base 16 to base 10 Base 2 to base 10 Base 10 to base 2 Base 10 to base 16
Converting positive numbers: base 2 to base 16 Put the digits into groups of 4 starting at the right If the last group has last than 4 digits, extend it with leading 0s Convert each group of 4 according to the following translation 0000 -> 0, 0001 -> 1, 0010 -> 2, 0011 ->3 0100 -> 4, 0101 -> 5, 0110 -> 6, 0111 -> 7 1000 -> 8, 1001 -> 9, 1010 -> A, 1011 -> B 1100 -> C, 1101 -> D, 1110 -> E, 1111 -> F
Example: 0110010010010012 to base 16 011 0010 0100 1001 3 2 4 9 3249
Converting positive numbers: base 16 to base 2 Convert each digit into a group of 4 according to the following translation 0 -> 0000, 1 -> 0001, 2 -> 0010, 3 -> 0011 4 -> 0100, 5 -> 0101, 6 -> 0110, 7 -> 0111 8 -> 1000, 9 -> 1001, A -> 1010, B -> 1011 C -> 1100, D -> 1101, E -> 1110, F -> 1111
Example: 8EF16 to base 2 8 = 1000 E = 1110 F = 1111 100011101111
Converting positive numbers: base 16 to base 10 Expand the number into its component values: face-value x position value Position value rightmost digit, position value = 160 Moving right to left, the exponent in each position increases by 1 (161, 162, 163, … ) Face value 0 - 9 are their face values A - F are 10 – 15 respectively Convert each exponent to its decimal equivalent Multiply each face-value pair together Add the values together
Example: CAB16 to base 10 C x 162 + A x 161 + B x 160 = 12 x 256 + 10 x 16 + 11 x 1 = 3072 + 160 + 11 = 3243
Converting positive numbers: base 2 to base 10 Expand the number into its component values: face-value x position value Position value rightmost digit, position value = 20 Moving right to left, the exponent in each position increases by 1 (21, 22, 23, … ) Face value 0 = 0, 1 = 1 Eliminate all the 0 terms Simplify each 1x2n to 2n Convert each exponent to its decimal equivalent Add the values together
Example: 1100101010112 to base 10 1x211 + 1x210 + 0x29 + 0x28 + 1x27 + 0x26 + 1x25 + 0x24 + 1x23 + 0x22 + 1x21 + 1x20 = 1x211 + 1x210 + 1x27 + 1x25 + 1x23 + 1x21 + 1x20 = 211 + 210 + 27 + 25 + 23 + 21 + 20 = 2048 + 1024 + 128 + 32 + 8 + 2 + 1 = 3243
Converting positive numbers: base 10 to base 2 Divide the number by 2 Use the remainder as the next number (beginning at the right) If the result is 0 then stop Use the result as the next number and go to step 1
Example: 327 to base 2 327 / 2 = 163 r 1 answer 1
Converting positive numbers: base 10 to base 16 Divide the number by 16 Use the remainder as the next number (beginning at the right) If the remainder is less than 10, use the number directly, else convert it to a letter using 10->A, 11->B, 12->C, 13->D, 14->E, 15->F If the result is 0 then stop Use the result as the next number and go to step 1
Example: 327 to base 16 327 / 16 = 20 r 7 answer 716
Two’s Complement Convert a positive base 10 number to binary two’s complement Convert a negative base 10 number to binary two’s complement Convert a positive base 10 number to hexadecimal two’s complement Convert a negative base 10 number to hexadecimal two’s complement
Convert a positive base 10 number to binary two’s complement Convert the number to base 2 as described on slide 11 Fill in all leading spaces with 0’s
Example: 52 to binary two’s complement Extend to 16-bit field: 0000000000110101
Convert a negative base 10 number to binary two’s complement Convert the positive value of number to binary as described on slide 11 Fill in all leading spaces with 0’s Flip all digits: 0 -> 1, 1 -> 0 Add binary 1 to the number, remembering the following rules: 0+0=0, 0+1=1, 1+0=1, 1+1=10
Example: -52 to binary two’s complement extend to 16 bits 0000000000110101 Flip the bits and add 1 1111111111001010 + 1 1111111111001011
Convert a positive base 10 number to hexadecimal two’s complement Convert the number to base 2 as described on slide 11 Fill in all leading spaces with 0’s Put the digits into groups of 4 starting at the right Convert each group of 4 according to the following translation 0000 -> 0, 0001 -> 1, 0010 -> 2, 0011 ->3 0100 -> 4, 0101 -> 5, 0110 -> 6, 0111 -> 7 1000 -> 8, 1001 -> 9, 1010 -> A, 1011 -> B 1100 -> C, 1101 -> D, 1110 -> E, 1111 -> F
Example: 52 to hexadecimal two’s complement 52/2 = 26 r 1 1 26/2 = 13 r 0 01 13/2 = 6 r 1 101 6/2 = 3 r 0 0101 3/2 = 1 r 1 10101 1/2 = 0 r 1 110101 0000000000110101 0000 0000 0011 0101 003516
Convert a negative base 10 number to binary two’s complement Convert the positive value of number to binary as described on slide 11 Fill in all leading spaces with 0’s Flip all digits: 0 -> 1, 1 -> 0 Add binary 1 to the number, remembering the following rules: 0+0=0, 0+1=1, 1+0=1, 1+1=10 Put the digits into groups of 4 starting at the right Convert each group of 4 according to the following translation 0000 -> 0, 0001 -> 1, 0010 -> 2, 0011 ->3 0100 -> 4, 0101 -> 5, 0110 -> 6, 0111 -> 7 1000 -> 8, 1001 -> 9, 1010 -> A, 1011 -> B 1100 -> C, 1101 -> D, 1110 -> E, 1111 -> F
Example: -52 to binary two’s complement 0000000000110101 1111111111001010 + 1 1111111111001011 1111 1111 1100 1011 FFCB16
Two’s Complement Operations Binary addition Binary subtraction Binary comparison Hexadecimal addition Hexadecimal subtraction Hexadecimal comparison
Binary addition Add the two numbers If the carry into the leftmost digit is not the same as the carry out, define it as an overflow
Example 00000000101110102 +00000000101010112 00000001011001012
Binary subtraction Convert the second number into it’s negative by Flipping each bit (0->1, 1->0) Add binary 1 to the number, remembering the following rules: 0+0=0, 0+1=1, 1+0=1, 1+1=10 Add the two numbers If the carry into the leftmost digit is not the same as the carry out, define it as an overflow and stop
Example 00000000101110102 - 00000000101010112 negate 00000000101010112 -> 1111111101010100 + 1 1111111101010101 +11111111010101012 00000000000011112
Binary comparison Subtract the two numbers as described in slide 27 If result is positive (first bit 0), first number is greater If result is negative (first bit 0 and not all others are 0), first number is smaller If result is zero, numbers are equal
Example 00000000101110102 - 00000000101010112 00000000000011112 First number is greater than the second
Hexadecimal addition Convert both numbers into binary as described in slide 5 Add the two numbers If the carry into the leftmost digit is not the same as the carry out, define it as an overflow and stop Put the digits into groups of 4 Convert each group of 4 according to the following translation 0000 -> 0, 0001 -> 1, 0010 -> 2, 0011 ->3 0100 -> 4, 0101 -> 5, 0110 -> 6, 0111 -> 7 1000 -> 8, 1001 -> 9, 1010 -> A, 1011 -> B 1100 -> C, 1101 -> D, 1110 -> E, 1111 -> F
Example: BA16 + AB16 BA16 AB16 1011 1010 1010 1011 0000000010111010 0000000010101011 0000000010111010 +0000000010101011 0000000101100101 0000 0001 0110 0101 016516
Alternative algorithm: hexadecimal addition table 1 2 3 4 5 6 7 8 9 A B C D E F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E
Example: BA16 + AB16 (1) BA16 +AB16 ------------ 516 16516
Hexadecimal subtraction Convert both numbers into binary as described in slide 5 Convert the second number into it’s negative by Flipping each bit (0->1, 1->0) Add binary 1 to the number, remembering the following rules: 0+0=0, 0+1=1, 1+0=1, 1+1=10 Add the two numbers If the carry into the leftmost digit is not the same as the carry out, define it as an overflow
Example: BA16 - AB16 BA16 AB16 1011 1010 1010 1011 0000000010111010 0000000010101011 00000000101110102 - 00000000101010112 negate 00000000101010112 -> 1111111101010100 + 1 1111111101010101 +11111111010101012 00000000000011112 0000 0000 0000 11112 000F16
Alternative algorithm: hexadecimal subtraction table borrow not needed borrow needed 1 2 3 4 5 6 7 8 9 A B C D E F
Example: BA16 - AB16 A B 1A16 - A B16 ------------ F16