470 likes | 1k Views
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
E N D
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 163 / 2 = 81 r 1 answer 11 81 /2 = 40 r 1 answer 111 40 / 2 = 20 r 0 answer 0111 20 / 2 = 10 r 0 answer 00111 10 / 2 = 5 r 0 answer 000111 5 / 2 = 2 r 1 answer 1000111 2 / 2 = 1 r 0 answer 01000111 1 / 2 = 0 r 1 answer 101000111
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 20 / 16 = 1 r 4 answer 4716 1 / 16 = 0 r 1 answer 14716
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 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 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 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 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 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 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 00000000101110102 +11111111010101012 00000000000011112
Binary comparison • Subtract the two numbers as described in slide 27 • Comparison • 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
Example: BA16 + AB16 (1) BA16 +AB16 ------------ 516 BA16 +AB16 ------------ 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 00000000101110102 +11111111010101012 00000000000011112 0000 0000 0000 11112 000F16
Alternative algorithm:hexadecimal subtraction table borrow not needed borrow needed
Example: BA16 - AB16 A B 1A16 - A B16 ------------ F16