Number SystemsBits and bytesNumber systemsEverything is a number?CountingCounting in three systemsComputers use binary numbersUsing octal and hex numbersWriting octal and hex integersASCIIExtended ASCIIUnicodeThe EndJan 14, 2019Number Systems2Bits and bytesA bit is a single two-valued quantity: yes or no, true or false, on or off, high or low, good or badOne bit can distinguish between two cases: T, FTwo bits can distinguish between four cases:TT, TF, FT, FFThree bits can distinguish between eight cases:TTT, TTF, TFT, TFF, FTT, FTF, FFT, FFFIn general, n bits can distinguish between 2n casesA byte is 8 bits, therefore 28 = 256 cases3Number systemsThe binary (base 2) number system uses two “binary digits, ” (abbreviation: bits) -- 0 and 1The octal (base 8) number system uses eight digits:0, 1, 2, 3, 4, 5, 6, 7The decimal (base 10) number system uses ten digits:0, 1, 2, 3, 4, 5, 6, 7, 8, 9The hexadecimal, or “hex” (base 16) number system uses sixteen digits:0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F4Everything is a number?Everything in the computer is stored as a pattern of bitsBinary distinctions are easy for hardware to work withNumbers are stored as a pattern of bitsComputers use the binary number systemCharacters are stored as a pattern of bitsOne byte (8 bits) can represent one of 256 charactersSo, is everything in the computer stored as a number?No it isn’t, it’s stored as a bit patternThere are many ways to interpret a bit pattern5CountingTo count up in any number system,add 1 to the rightmost digitif the result is higher than the largest digit,set that digit to zero and carry to the next placerepeat addition of 1 and carrying as many times as necessaryExample: In hex, F is the largest digitHence, 4A6FF + 1 = 4A7006Counting in three systemsDec Bin Hex 0 0 0 1 1 1 2 10 2 3 11 3 4 100 4 5 101 5 6 110 6 7 111 7 8 1000 8 9 1001 910 1010 A Dec Bin Hex 11 1011 B 12 1100 C 13 1101 D 14 1110 E 15 1111 F 16 10000 10 17 10001 11 18 10010 12 19 10011 13 20 10100 147Computers use binary numbersPeople like to use decimal numbersComputers use binary numbersJava translates decimal numbers into binaryThe computer does all its arithmetic in binaryJava translates binary results back into decimalYou occasionally have to use numbers in other number systemsIn Java, you can write numbers as octal, decimal, or hexadecimal (but not binary)Colors are usually specified in hexadecimal notation:#FF0000, #669966,8Using octal and hex numbersComputers use binary, but the numbers are too long and confusing for people--it’s easy to lose your placeOctal or hex is better for peopleTranslation between binary and octal or hex is easyOne octal digit equals three binary digits 101101011100101000001011 5 5 3 4 5 0 1 3One hexadecimal digit equals four binary digits 101101011100101000001011 B 5 C A 0 B9Writing octal and hex integersIntegers are usually written in decimal notation:7, 532, -28To write a number in octal, just start with a zero:02, 0657, -077...but don’t use the digits 8 or 9 !To write a number in hexadecimal, start with 0x or 0X: 0xA, 0X43AB5, -0xFFFFThe “digits” A through F can be upper or lower caseUppercase is usually preferredLowercase is more readable for long numbers10ASCIIUp until recently, all programming languages used ASCIISource: Wikipedia11Extended ASCIIIn ASCII, the first bit is always zeroEverybody got the bright idea of using a one for the first bit, to give an additional 128 charactersEverybody added different characters, in different ordersLots of people who don't know any better put Extended ASCII characters (curly quotes, letters with accents marks, etc.) into their documentsConsequently, other people see these characters as random garbageMoral: Don’t use Extended ASCII12UnicodeEventually, ASCII (American Standard Code for Information Interchange) wasn’t enoughUnicode is the new standard; it has more than 100,000 characters definedFor ease of transition, the first 128 characters are those defined in the ASCII standard, and require one byte each; other characters may require up to four bytesThis is the UTF-8 encodingA second Unicode standard uses either two or four bytes for each character (again, the first 128 are the same as ASCII)This is the UTF-16 encodingJava and all other modern languages now use Unicode13The End“There are 10 kinds of people in the world:those who understand binary, and those who don’t.” --Anon. “Real Programmers always confuse Christmas and Halloween because Oct31 == Dec25” --Andrew
View Full Document