440 likes | 593 Vues
This comprehensive guide explores essential concepts in computer number systems, focusing on decimal (base 10) and binary (base 2) representations. We cover sign-magnitude, two's complement, and their applications in negative numbers. You’ll learn how decimal fractions and ASCII codes work, and discover the importance of binary storage in computers, including conversions between decimal and binary. The guide also highlights binary arithmetic, including addition and overflow, making complex concepts approachable for anyone interested in computer science fundamentals.
E N D
Computer Science 101 Number Systems
Humans • Decimal Numbers (base 10) • Sign-Magnitude (-324) • Decimal Fractions (23.27) • Letters for text
Computers • Binary Numbers (base 2) • Two’s complement and sign-magnitude • Binary fractions and floating point • ASCII codes for characters (A65)
Why binary? • Information is stored in computer via voltage levels. • Using decimal would require 10 distinct and reliable levels for each digit. • This is not feasible with reasonable reliability and financial constraints. • Everything in computer is stored using binary: numbers, text, programs, pictures, sounds, videos, ...
Decimal: Non-negatives • Base 10 • Uses decimal digits: 0,1,2,3,4,5,6,7,8,9 • Positional System - position gives power of the base • Example: 3845 = 3x103 + 8x102 + 4x101 + 5x100 • Positions: …543210
Binary: Non-negatives • Base 2 • Uses binary digits (bits): 0,1 • Positional system • Example: 1101 = 1x23 + 1x22 + 0x21 + 1x20
Conversions • External Internal(Human) (Computer) 25 11001 A 01000001 • Humans want to see and enter numbers in decimal. • Computers must store and compute with bits.
Binary to Decimal Conversion • Algorithm: • Expand binary number using positional scheme. • Perform computation using decimal arithmetic. • Example:110012 1x24 + 1x23 + 0x22 + 0x21 + 1x20 = 24 + 23 + 20= 16 + 8 + 1 = 2510
Decimal to Binary - Algorithm 1 • Algorithm: While N 0 do Set N to N/2 (whole part) Record the remainder (1 or 0) end-of-loop Set A to remainders in reverse order
Decimal to binary - Example • Example: Convert 32410 to binary N Rem N Rem 324 162 0 5 0 81 0 2 1 40 1 1 0 20 0 0 1 10 0 • 32410 = 1010001002
Decimal to Binary - Algorithm 2 • Algorithm: Set A to 0 (all bits 0) While N 0 do Find largest P with 2P N Set bit in position P of A to 1 Set N to N - 2P end-of-loop
Decimal to binary - Example • Example: Convert 32410 to binary N Power P A 324 256 8 100000000 68 64 6 101000000 4 4 2 101000100 0 • 32410 = 1010001002
Binary Addition • One bit numbers:+ 0 1 0 | 0 1 1 | 1 10 • Example 1111 1 110101 (53)+ 101101 (45) 1100010 (98)
Overflow • In a given type of computer, the size of integers is a fixed number of bits. • 16 or 32 bits are popular choices • It is possible that addition of two n bit numbers yields a result requiring n+1 bits. • Overflow is the term for an operation whose results exceed the size allowed for a number.
Overflow Example • Suppose we are dealing with 5 bit numbers; so a number is not allowed to be more than 5 bits (really restrictive, but for an example this is fine) 10101 (decimal 21)10100 (decimal 20) (1)01001 (decimal 9)
Negatives: Sign-Magnitude system • With a fixed number of bits, say N • The leftmost bit is used to give the sign • 0 for positive number • 1 for negative number • The other N-1 bits are for the magnitude • Example: -25 with 8 bit numbers • Sign: 1 since negative • Magnitude: 11001 for 25 • 8-bit result: 10011001 • Note: This would be 153 as a positive.
Sign-Magnitude: Pros and Cons • Pro: • Easy to comprehend • Easy to convert • Con: • Addition complicated (expensive) If signs same then … else if positive part larger … • Two representations of 0
Negatives: Two’s complement system • Same as sign-magnitude for positives • With N bit numbers, to compute negative • Invert all the bits • Add 1 • Example: -25 in 8-bit two’s complement • 25 00011001 • Invert bits: 11100110 • Add 1: 1 11100111
2’s Complement: Pros and Cons • Con: • Not so easy to comprehend • Human must convert negative to identify • Pro: • Addition is exactly same as for positivesNo additional hardware for negatives, and subtraction. • One representation of 0
2’s Complement: Examples • Compute negative of -25 (8-bits) • We found -25 to be 11100111 • Invert bits: 00011000 • Add 1: 00011001 • Recognize this as 25 in binary • Add -25 and 37 (8-bits) • 11100111 (-25) + 00100101 ( 37) (1)00001100 • Recognize as 12
Facts about 2’s Complement • Leftmost bit still tells whether number is positive or negative as with sign-magnitude • 2’s complement is same as sign-magnitude for positives
2’s complement to decimal (examples) • Assume we’re using 8-bit 2’s complement: • X = 11011001 -X = 00100110 + 1 = 00100111 = 32+4+2+1 = 39 (decimal) So, X = -39 • X = 01011001Since X is positive, we have X = 64+16+8+1 = 89
Ranges for N-bit numbers • Unsigned (positive) • 0000…00 or 0 • 1111…11 which is 2N-1 • For N=8, 0 – 255 • Sign-magnitude • 1111…11 which is -(2N-1-1) • 0111…11 which is 2N-1-1 • For N=8, -127 to 127 • 2’s Complement • 1000…00 which is -2N-1 • 0111…11 which is 2N-1 - 1 • For N=8, -128 to 127
2’s Complement Overflow Example • Assume we are using 5-bit 2’s complement numbers 01001 (decimal 9)01101 (decimal 13) 10110 (decimal -10)
Overflow - Explanation • We had 2147483645 + 2147483645 = -6 • Why? • 231 -1 = 2147483647 and has 32 bit binary representation 0111…111. This is largest 2’s complement 32 bit number. • 2147483645 would have representation 011111…101. • When we add this to itself, we get X = 1111…1010 (overflow) • So, -X would be 000…0101 + 1 = 00…0110 = 6 • So, X must be -6.
Python – type long • In Python, when whole numbers get too big for the 32 bits allotted, they are converted to a type called “long”. • Numbers of this type are allowed to grow arbitrarily long (restricted by available memory). • This is handled by software of Python system.
Octal Numbers • Base 8 Digits 0,1,2,3,4,5,6,7 • Number does not have so many digits as binary • Easy to convert to and from binary • Often used by people who need to see the internal representation of data, programs, etc.
Octal Conversions • Octal to Binary • Simply convert each octal digit to a three bit binary number. • Example: 5368 = 101 011 1102 • Binary to Octal • Starting at right, group into 3 bit sections • Convert each group to an octal digit • Example 110111111010102 = 011 011 111 101 010 = 337528
Hexadecimal • Base 16 Digits 0,…,9,A,B,C,D,E,F • Hexadecimal Binary • Just like Octal, only use 4 bits per digit. • Example: 98C316 = 1001 1000 1100 00112 • Example110100111010112 = 0011 0100 1110 1011 = 34EB
Red Green Blue - RGB • In this system colors are created from the primary colors Red, Green and Blue. • A color is specified by giving three values in the range 0-255. • The first number is the Red value, the second is Green and third Blue.
RGB - Examples R=212 G=88 B=200 R=240 G=244 B=56 R=150 G=150 B=150 R=255 G=255 B=255
RGB - In binary • R = 212 11010100 • G = 88 01010100 • B = 200 11001000 • Color stored in 3 eight bit groups:11010100 01010100 11001000 • Using 24 bits this way, there would be about 16 million colors. R=212 G=88 B=200
RGB - In hexadecimal • Color stored in 3 eight bit groups:11010100 01010100 11001000 • Note that each 8 bit group can be expressed with two hex digits 11010100 is given by D4 01010100 is 54 11001000 is C8 • Color given by D454C8 in hexadecimal R=212 G=88 B=200
Background Color • We can add a background color to our web page by adding a BGColor attribute to the Body tag: <body bgcolor = “value”> • The value can be either a “known” color or a color specified with the 6 hex digit system.
Background Color (cont.) • There is a long list of “known” colors, but only 16 that are guaranteed to validate with all browsers:aqua, black, blue, fuchsia, gray, green, lime, maroon, navy, olive, purple, red, silver, teal, white, and yellow • To specify a background color with hex digits use the form<body bgcolor = “#D454C8”>for example
If that's a bit, what's a bridle?