360 likes | 366 Views
Learn about number systems and computer arithmetic, including conversion between decimal, binary, and hexadecimal numbers, addition, subtraction, multiplication, division, and representation of negative integers and fractions.
E N D
Number Systems and Computer Arithmetic Winter 2014 COMP 1380 Discrete Structures I Computing Science Thompson Rivers University
Course Contents • Speaking Mathematically • Number Systems and Computer Arithmetic • Logic and Truth Tables • Boolean Algebra and Logic Gates • Vectors and Matrices • Sets and Counting • Probability Theory and Distributions • Statics and Random Variables Number Systems
Unit Learning Objectives • Convert a decimal number to binary number. • Convert a decimal number to hexadecimal number. • Convert a binary number to decimal number. • Convert a binary number to hexadecimal number. • Convert a hexadecimal number to binary number . • Add two binary numbers. • Compute the 1’s complement of a binary number. • Compute the 2’s complement of a binary number. • Understand the 2’s complement representation for negative integers. • Subtract a binary number by using the 2’s complement addition. • Multiply two binary numbers. • Use of left shift and right shift. • Binary division Number Systems
Unit Contents The number systems: • The decimal system • The binary system • The hexadecimal system Computer Arithmetic: • Binary addition • Representation of negative integers • Binary multiplication • Binary division • Representation of fractions Number Systems
1. Number Systems Number Systems
The Decimal System • Uses 10 digits 0, 1, 2, ..., 9. • Decimal expansion: • 83 = 8×10 + 3 • 4728 = 4×103 + 7×102 + 2×101 + 8×100 • 84037 = ??? • 43.087 = ??? • Do you know addition, subtraction, multiplication and division? • 1234 + 435.78 • 1234 – 435.78 • 1234 × 435.78 • 1234 / 435.78 Number Systems
The Binary System • In computer systems, the most basic memory unit is a bit that contains 0 or 1. • The data unit of 8 bits is referred as a byte that is the basic memory unit used in main memories and hard disks. • All data are represented by using binary numbers. Data types such as text, voice, image and video have no meaning in the data representation. • 8 bits are usually used to express English alphabets. • A collection of nbits has 2npossible states(, i.e., numbers). Is it true? • E.g., • How many different numbers can you express using 2 bits? • How many different numbers can you express using 4 bits? • How many different numbers can you express using 8 bits? • How many different numbers can you express using 32 bits? Number Systems
How can we store integers(i.e., positive numbers only) in a computer? • E.g., • A decimal number 329? • Is it okay to store 3 chracters ‘3’, ‘2’, and ‘9’ for 329? • How do we store characters? • 32910 = ???2 Number Systems
Uses two digits 0 and 1. • 02 = 0×20 = 010 • 12 = 1×20 = 110 • 102 = 1×21 + 0×20 = 210 • 112 = 1×21 + 1×20 = 310 • 1002 = 1×22 + 0×21 + 0×20 = 410 • 1012 = 1×22 + 0×21 + 1×20 = 510 • 1102 = 1×22 + 1×21 + 0×20 = 610 • 1112 = 1×22 + 1×21 + 1×20 = 710 • 10002 = 1×23 + 0×22 + 0×21 + 0×20 = 810 • 10012 = 1×23 + 0×22 + 0×21 + 1×20 = 910 • ... Number Systems
Powers of 2 • 12 = 1×20 = 110 • 102 = 1×21 + 0×20 = 210 • 1002 = 1×22 + 0×21 + 0×20 = 410 • 10002 = 1×23 + 0×22 + 0×21 + 0×20 = 810 • 1 00002 = 24 = 1610 • 10 00002 = 25 = 3210 • 10 000002 = 26 = 6410 Number Systems
1000 00002 = 27 = ???10 • 1 0000 00002 = 28 = ???10 • 10 0000 00002 = 29 = ???10 • 100 0000 00002 = 210 = ???10 • 1000 0000 00002 = 211 = ???10 • 1 0000 0000 00002 = 212 = ???10 • Can you memorize the above powers of 2? • Converting to decimals • 11012 = ???10 • 1011 00102 = ???10 • 1011.00102 = ???10 Number Systems
Converting Decimal to Binary Quotient Remainder • 23 / 2 11 1 11 / 2 5 1 5 / 2 2 1 2 / 2 1 0 1 / 2 0 1 => 2310 = 101112 • 27110 = ???2 • 607110 = ???2 Number Systems
Another similar idea • 27110 = ???2 256 < 271 < 512 -> 271 = 256 + 15 = 1 0000 00002 + 15 8< 15 < 16 -> 15 = 8 + 7 = 10002 + 7 => 271 = 1 0000 00002 + 15 = 1 0000 00002 + 10002 + 7 = 1 0000 00002 + 10002 + 1112 = 1 0000 11112 • 127110 = ???2 Number Systems
Hexadecimal Number System • 010 = 00002 = 016 = 0x0 • 110 = 00012 = 116 = 0x1 • 210 = 00102 = 216 = 0x2 • 310 = 00112 = 316 = 0x3 • 410 = 01002 = 416 = 0x4 • 510 = 01012 = 516 = 0x5 • 610 = 01102 = 616 = 0x6 • 710 = 01112 = 716 = 0x7 • 810 = 10002 = 816 = 0x8 • 910 = 10012 = 916 = 0x9 • 1010 = 10102 = A16 = 0xA • 1110 = 10112 = B16 = 0xB • 1210 = 11002 = C16 = 0xC • 1310 = 11012 = D16 = 0xD • 1410 = 11102 = E16 = 0xE • 1510 = 11112 = F16 = 0xF • 0x23c9d6ef = ???10 0x23c9d6ef = ???2 • 14816= ???1014816= ???2 4 bitscan be used for a hexadecimal number, 0, ..., F. Please memorize it! Number Systems
Converting Decimal to Hexadecimal Quotient Remainder • 328 / 16 = 20 × 16 + 8 20 / 16 = 1 × 16 + 4 1 / 16 = 0 × 16 + 1 => 32810 = 14816 = ???2 • 14816 = (1 × 162 + 4 × 161 + 8 × 160)10 • 19210 = ???16 Number Systems
Converting Binary to Hexadecimal • 4DA916= ???2 • 1001101101010012 = ???16 = 100 1101 1010 1001 = 4DA9 • 10 11102 = 0x??? = ???10 • 0100 1110 1011 1001 01002 = 0x??? = ???10 Number Systems
2. Computer Arithmetic Number Systems
Binary Addition • How to add two binary numbers? Let’s consider only unsigned integers(i.e., zero or positive numbers only) for a while. • Just like the addition of two decimal numbers. • E.g., 10010 10010 1111 + 1001+ 1011+ 1 11011 11101 ??? 10111 + 111 ??? carry Number Systems
Binary Subtraction • How to subtract a binary number? • Just like the subtraction of decimal numbers. • E.g., 0112 02 02 1000 10 10 10010 10010 10010 -1-1 -11 -11 -11 1 ?1 ?11 1111 Try: 101010 How to do? 1 34–79=? -101-10 • Is subtraction easier or more difficult than addition? Why? Number Systems
In the previous slide, 10010 – 11 = 1111 • What if we add 00010010 + 11111100 1 00001110 + 1 00001111 • Is there any relationship between 112 and 111111002? • The 8-bit 1’s complement of 112 is ??? Switching 0 1 • This type of addition is called 1’s complement addition. • Find the 8-bit one’s complements of the followings. • 11011 -> 00011011 -> • 10 -> 00000010 -> • 101 -> 00000101 -> Number Systems
In the previous slide, 10010 – 11 = 1111 • What if we add 00010010 + 11111101 1 00001111 • Is there any relationship between 11 and 11111101? • The 8-bit 2’s complement of 11 is ??? • 2’s complement ≡ 1’s complement + 1 -> 11111100 + 1 = 11111101 • This type of addition is called 2’s complement addition. • Find the 16-bit two’s complements of the followings. • 11011 -> 0000000000011011 -> • 10 • 101 Number Systems
Another example 101010 - 101 ??? • What if we use 1’s complement addition or 2’s complement addition instead as followings? Let’s use 8-bit representation. 00101010 00101010 + 11111010+ 11111011 1 00100100 1 00100101 + 1 00100101 • What does this mean? • A – B = A + (–B), where A and B are positive • Is –B equal to the 1’s complement or the 2’s complement of B? 1’s complement addition 2’s complement addition Number Systems
Can we use 8-bit 1’s complement addition for 12 – 102 = –12? 1 00000001 - 10+ 11111101<- 8-bit 1’s complement of 10 11111110 <- Is this correct? (Is this 1’s complement of 1?) • Let’s use 8-bit 2’s complement addition for 12 – 102. 00000001 +11111110<- 2’s complement of 10 11111111 <- Correct? (2’s complement of 1?) • 12 – 102 = 12 + (–102) • Subtraction can be converted to addition with negative numbers. • Then, how to represent negative binary numbers, i.e., signed integers? Number Systems
Representation of Negative Binaries • Representation of signed integers • 8 or 16 or 32 bits are usually used for integers. • Let’s use 8 bits for examples. • The left most bit (called most significant bit) is used as sign. • When the MSB is 0, positive integers. • When the MSB is 1, negative integers. • The other 7 bits are used for integers. • What signed integers can be described using the 8 bit representation? • How to represent positive integer 5? • 00001001 • How about -9? • 10001001 is really okay? • 00001001 (9) + 10001001 (-9) = 10010010 (-18) It is wrong! • We need a different representation for negative integers. Number Systems
How about -9? • 10001001 is really okay? • 00001001 (9) + 10001001 (-9) = 10010010 (-18) It is wrong! • We need a different representation for negative integers. • What is the 8-bit 1’s complement of 9? • 11110110 <- 8-bit 1’s complement of 9 • 00001001 + 11110110 <- 9 + 8-bit 1’s complement of 9 = 11111111 <- Is it zero? (1’s complement of 0?) • What is the 2’s complement of 9? • 11110111 <- 8-bit 2’s complement of 9 • 00001001 + 11110111 <- 9 + 8-bit 2’s complement of 9 = 1 00000000 <- It looks more like zero. • 2’s complement representation is used for negative integers. Number Systems
12 – 102 = 12 + (–102) ??? 00000001 + 11111110<- 2’s complement of 10, i.e., -102 11111111 <- 2’s complement of 1, i.e., -1 (= 1 – 2) • 1010102 – 10011012 = 001010102 + (–010011012) ??? • 100102 – 112 ??? • 102 – 1112 ??? • –102 – 12 ??? • Is the two’s complement of the two’s complement of an integer the same integer? • What is x when the 8-bit 2’s complement of x is • 11111111 11110011 10000001 Number Systems
8-bit representation with 2’s complement 127 01111111 126 01111110 ... ... 2 00000010 1 00000001 0 00000000 -1 11111111 (28 – 1) -2 11111110 -3 11111101 ... ... -127 10000001 -128 10000000 • The maximum number is ? byte y = 125; y += 4; ?? • The minimum number is ? byte x = -126; x -= 5; ?? • What if we add the maximum number by 1 ??? • What if we subtract the minimum number by 1 ??? overflow +1 +1 -1 overflow +1 -1 -1 Number Systems
16-bit representation with 2’s complement ... 01111111 11111111 ... 01111111 11111110 ... ... 3 00000000 00000011 2 00000000 00000010 1 00000000 00000001 0 00000000 00000000 -1 11111111 11111111 -2 11111111 11111110 -3 11111111 11111101 ... ... ... 10000000 00000001 ... 10000000 00000000 • The maximum number is ? What if we add the maximum number by 1 ??? • The minimum number is ? What if we subtract the minimum number by 1 ??? overflow +1 +1 +1 short y = 32767; y++; ??? short x = -32767; x--; ??? -1 -1 -1 overflow Number Systems
Note that computers use the 8-bit representation, the 16-bit representation, the 32-bit representation and the 64-bit representation with 2’complement for negative integers. • In programming lanaguages • byte, unsigned byte 8-bit • short, unsigned short 16-bit • int, unsigned int 32-bit • long, unsigned long 64-bit • When we use the 32-bit representation with 2’s complement, • The maximum number is ? • What if we add the maximum number by 1 ??? • The minimum number is ? • What if we subtract the minimum number by 1 ??? Number Systems
How to convert a negative binary number to decimal? • An example of 8-bit representation, • 10011001 = ??? Number Systems
Multiplication of Binary Numbers • How to multiply two decimal numbers? • E.g., • 1001101 × 1 = ??? • 1001101 × 10 = ??? • 1001101 × 100 = ??? • 1001101 × 101 = 1001101 × 10 × 10 + 1001101 × 0 + 1001101 × 1 • What if we shift 1001101 left by one bit? 1001 -> 10010 • What if we shift 1001101 left by two bits? 1001 -> 100100 • Multiplication by a power of 2. Number Systems
Division of Binary Numbers • Binary division? 1111 <- quotient 101 1001101 -101 1001 -101 1000 -101 111 -101 10 <- remainder • Try 1101011 / 110 • Dividing negative binary numbers: division without sign, and then put the sign. Number Systems
Binary division by a power of 2? 1001101 / 10 = 100110 1001101 / 100 = 10011 1001101 / 1000 = 1001 • What if we shift 1001101 right by 1 bit? • What if we shift 1001101 right by 2 bits? • What if we shift 1001101 right by 3 bits? • 1001101 / 101 ??? Complicated implementation required Number Systems
2-1 = 0.5 2-2 = 0.25 2-3 = 0.125 00101000.101 (40.625) + 11111110.110(-1.25) (2’s complement) 00100111.011 (39.375) Fractions: Fixed-Point • How can we represent fractions? • Use “binary point” to separate positive from negative powers of two -- like “decimal point.” • 2’s complement addition and subtraction still work. (Assuming binary points are aligned) No new operations -- same as integer arithmetic. Number Systems
How to convert decimal fractions to binary? • 0.62510 = ???2 • 0.625 * 2 = 1.25 -> 1 (0.625 = x 2-1 + y 2-2 + z 2-3 + ...) • 0.25 * 2 = 0.5 -> 0 (1.25 = x + y 2-1 + z 2-2 + ... => x = 1) • 0.5 * 2 = 1.0 -> 1 (0.25 = y 2-1 + z 2-2 + ... ) • Therefore 0.101 • 0.710 = ???2 • 0.7 * 2 = 1.4 -> 1 • 0.4 * 2 = 0.8 -> 0 • 0.8 * 2 = 1.6 -> 1 • 0.6 * 2 = 1.2 -> 1 • 0.2 * 2 = 0.4 -> 0 • 0.4 * 2 = 0.8 -> 0 • 0.8 * 2 = 1.6 -> 1 • ... • Therefore 0.1011001... How to deal with big numbers and small numbers? Number Systems
Very Large and Very Small: Floating-Point • Large values: 6.023 × 1023 -- requires 79 bits • Small values: 6.626 × 10-34 -- requires > 110 bits • How to handle those big/small numbers? • Use equivalent of “scientific notation”: F × 2E • Need to represent F (fraction), E (exponent), and sign. • 6.023 × 1023 = 0.6023 × 1024 • 6.626 × 10-34 = 0.6626 × 10-33 • 00101000.101 (40.62510) = 0.101000101 × 26. Store 6 in the exponent and 101000101 in mantissa. (Try the multiplication) • IEEE 754 Floating-Point Standard (32-bits): 1b 8 bits 23 bits S Exponent Fraction (mantissa) Number Systems