440 likes | 574 Views
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 (A 65).
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?