The document discusses different number systems used in computers including decimal, binary, hexadecimal, and signed binary numbers. It explains how each system works using a base and represents values. Key points covered include binary addition/subtraction, multiplication/division, converting between binary and hexadecimal, signed number representations like signed magnitude and two's complement, character encoding schemes like ASCII, and issues around fixed-width representations.
The document discusses different number systems used in computers including decimal, binary, hexadecimal, and signed binary numbers. It explains how each system works using a base and represents values. Key points covered include binary addition/subtraction, multiplication/division, converting between binary and hexadecimal, signed number representations like signed magnitude and two's complement, character encoding schemes like ASCII, and issues around fixed-width representations.
The document discusses different number systems used in computers including decimal, binary, hexadecimal, and signed binary numbers. It explains how each system works using a base and represents values. Key points covered include binary addition/subtraction, multiplication/division, converting between binary and hexadecimal, signed number representations like signed magnitude and two's complement, character encoding schemes like ASCII, and issues around fixed-width representations.
Thorne, Edition 2 : Section 1.3, Appendix I (Irvine, Edition VI : Section 1.3) SYSC3006 2 Starting from What We Already Know Decimal Numbers Based Number Systems : 1. Base defines set of symbols 2. Number = string of symbols 3. Interpretation rules Digits numbered right to left, start at 0 eg. 4-digit number d 3 d 2 d 1 d 0 Value of digit depends on symbol and position within number Value of number is sum of value of digits Decimal Numbers : Base-10 with symbols = { 0, 1, 2, 3, , 9} 4-digit example: d 3 d 2 d 1 d 0 = 1436 = d 3 10 3 + d 2 10 2 + d 1 10 1 + d 0 10 0 = 1 10 3 + 4 10 2 + 3 10 1 + 6 10 0 Note : 1. Addition/Subtraction : We carry and borrow 10s 2. Multiplication/Division by 10 : Shift right/left SYSC3006 3 Applying Same Methods to Binary Numbers Binary Numbers : Base-2with symbols = { 0, 1} 4-digit example: d 3 d 2 d 1 d 0 = 1010b = d 3 2 3 + d 2 2 2 + d 1 2 1 + d 0 2 0 = 1 2 3 + 0 2 2 + 1 2 1 + 0 2 0 = 1 8 + 0 4 + 1 2 + 0 1 = 8 + 2 = 10d Note : 1. Addition/Subtraction : We carry and borrow 2s 2. Multiplication/Division by 2: Shift right/left SYSC3006 4 Applying Same Methods to Binary Numbers Addition Subtraction 111b 1010b 101b 1001b + 10b + 111b - 10b - 111b _____ _____ _____ _____ Multiplication by Powers-of-2 Division by Powers-of-2 By 2 1 : 100b * 10b = By 2 1 : 100b / 10b = By 2 2 : 11b * 100b = By 2 2 : 1100b / 100b = By 2 3 : 100b * 1000b = By 2 3 : 100000b / 1000b = SYSC3006 5 4-bit Binary Numbers you should know Binary Decimal Binary Decimal 0000 0 1000 8 0001 1 1001 9 0010 2 1010 10 0011 3 1011 11 0100 4 1100 12 0101 5 1101 13 0110 6 1110 14 0111 7 1111 15 SYSC3006 6 Range of Representation Within a computer, all numbers are represented in a finite-width Registers are finite width, depending on processor Memory cells are 8 or 16 or 32 or 64-width Range : n-bit values can represent (at most) 2 n different counting numbers If start representation at 0, then largest value represented is 2 n 1 Previous page : 4-bit numbers Maximum number of values : 2 4 = 16 Range : 0 .. 15 (2 4 1) Observation : Binary representation often requires lots of bits xample: 601 10 = 1001011001 2 (10 bits!) Converting binary decimal is not so convenient SYSC3006 7 Hexadecimal Numbers : Base 16 Why Base-16 ? 16 = 2 4 Will provide us with a shortcut for working with large binary number analogous to acronyms (eg. CU, UBC, MIT) Hexadecimal Numbers : Base-16with symbols ={ 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F} 4-digit example: d 3 d 2 d 1 d 0 =12AFh =d 3 16 3 +d 2 16 2 +d 1 16 1 +d 0 16 0 = 1 16 3 +2 16 2 +A 16 1 +F 16 0 = 1 4096 +2 256 +10 16 +15 1 = 4096 +512 +160 +15 =4783d Addition/Subtraction : We carry and borrow 16s Multiplication/Division by 16: Shift right/left SYSC3006 8 Applying Same Methods to Hexadecimal Numbers Addition Subtraction 181h 1510h 1E1h 1001h + 89h + E11h - 1Fh - 111h _____ _____ _____ _____ Multiplication by Powers-of-16 Division by Powers-of-16 By 16 1 : 20h * 10h = By 16 1 : 105h / 10h = By 16 2 : 3 * 100h = By 16 2 : 10E0h / 100h = SYSC3006 9 Hexadecimal and Binary Numbers : 2 4 = 16 Converting Binary to Hexadecimal 16-bit: 1000101001101110 2 (= 35,438 10 ) group in 4s 1000101001101110 replace with hex 8 A 6 E 16 10-bit: 1001011001 2 (= 601 10 ) group in 4s 001001011001 replace with hex 2 5 9 16 Converting Hex Binary : Replace each hex digit by 4-digit binary rep. Example : 134h = 0001 0011 0100b SYSC3006 10 Common Pitfalls for Beginners 1. What do I mean when I say Ten hex ? 2. Are these two the same thing ? 1010 0010b and A2h 3. What are the widths of the following numbers ? 1001 0010b 2h 22h 1010h 1010b 4. Memory is always composed of bytes One byte =8 bits Contents of a byte =8 binary digits 0000 0000b 1111 1111b =2 hex digits =(2*4 bits) 00h FFh =0 255d SYSC3006 11 Representing Negative Numbers For unsignednumbers (counting, whole) : All n bits are used for the magnitude of the number Example : 4-bit number : 0000b . 1111b For signednumbers (negative) : One bit must be used for the sign : Most significant bit = sign bit 0 = positive, 1 = negative n-1 bits are used for the magnitude of the number. Encoding the magnitude portion: 2 typical approaches 1. Signed magnitude encoding : A natural progression from unsigned numbers, but No good for math 2. Twos complement encoding Hard to understand, but Math works SYSC3006 12 Signed Magnitude Encoding of Signed Numbers Magnitude encoded in remaining n 1 bits using binary number system (as for counting #s) Example : 10000001b = -1d magnitude = 000 0001b = 1 sign bit = 1 negative number Problems 1. Two representations for 0 positive 0 (sign bit = 0) negative 0 (sign bit = 1) 2. Awkward arithmetic operations 0000 0010b 2 + 1000 0001b + -1 1000 0011 -3 SYSC3006 13 Twos Complement Encoding of Signed Numbers Magnitude of negative numbers encoded with flip-and-add Magnitude of positive numbers encoded as normal binary number Definitions: complement of one bit: b = 1 b complement of 0 = 1 complement of 1 = 0 1s complement of an n-bit value: complement each bit 2s complement of an n-bit value: complement each bit, and then add 1 (flip-and-add) Ignore any carry out of most significant bit SYSC3006 14 Twos Complement Encoding of Signed Numbers Example : Find the 8-bit 2s complement representation of 1. +1 10 0000 0001b Complement 1111 1110b Add 1 + 1 1 10 1111 1111b = FFh Encoding of negative numbers is weird ! Example : Find the 8-bit 2s complement representation of +1. +1 10 0000 0001b = 01h Thats it! 2s complement operation SYSC3006 15 Twos Complement Encoding of Signed Numbers Example : Find the decimal value of this 2s complement number FEh (sign bit = 1) 1111 1110b Complement 0000 0001b Add 1 + 1 0000 0010b = 2d FEh = -2d Example : Find the decimal value of this 2s complement number 79h (sign bit = 0) 0111 1001b = 64 + 32 + 16 + 8 + 1 = 121d 2s complement operation SYSC3006 16 Range of SignedRepresentations Whether using signed magnitude or 2s complement MSBit = sign bit magnitude = n-1 remaining bits Range : n-bit values still represent (at most) 2 n different counting numbers, but Use half of binary values for negative values (i.e. 2 n1 values) , the rest for positive (and 0) Range for negative and positive values : All negatives start with 1. -2 n 1 . 0 . 2 n 1 -1 (Total 2 n numbers) SYSC3006 17 Why 2Complement for Signed Numbers ? 1. Negating a negated number should give the original number ( x) = x 1 10 1111 1111 complement 0000 0000 add 1 + 1 +1 10 0000 0001 It works ! 2. How many representations for 0? 0 10 0000 0000 complement 1111 1111 add 1 + 1 0 10 0000 0000 ignore carry out of most significant bit SYSC3006 18 One Special Case with 2Complement for Signed Numbers Consider 8-bit 2s complement encodings: 2 8 = 256, 2 7 = 128 range: 128 . . + 127 ( 2 n 1 ) (2 n 1 1) +127 10 0111 1111 complement 1000 0000 add 1 + 1 127 10 1000 0001 SYSC3006 19 One Special Case with 2Complement for Signed Numbers How to get encoding for 128 ? 1. Using math 127 1 = 128 127 10 1000 0001 subtract 1 1 128 10 1000 0000 2. Using 2s complement What if we negate 128 ? [ special case !! ] 128 10 1000 0000 complement 0111 1111 add 1 + 1 128 10 1000 0000 SYSC3006 20 Character Encoding Representation of displayable characters: characters: { A, B , . . . , Y, Z } 26 2 = 52 (upper and lower case) decimal (10) digits: {0, 1, . . . , 8, 9 } punctuation: ! , . ? / : ; math symbols: + * = ( and / above) brackets: ( ) [ ] { } < > others: @ # $ % ^ & \ | ~ blank space: 90+ symbols (??) Various encoding schemes have been used SYSC3006 21 (7-bit) ASCII character encoding ASCII =American Standard Code for Information Interchange 7-Bit ASCII Encoding 7 bits to encode each character (128 codes) often extended to 8-bit (byte) values by making most significant bit (msb) = 0 [in following: all codes are given as hex values] 00 1F non-displayable control chars 00h NULL 07h BELL 08h backspace 09h tab 0Ah line feed 0Ch form feed 0Dh carriage return others often serve special purposes in communication applications SYSC3006 22 ASCII Code Table Decimal SYSC3006 23 (7-bit) ASCII character encoding 30h 39h decimal digit chars 30h 0 39h 9 41h 5Ah Upper Case Letter chars 41h A 5Ah Z 61h 7Ah Lower Case Letter chars 61h a 7Ah z character 0 number SYSC3006 24 (7-bit) ASCII character encoding Example : 306 is FUN! encoding: 33 30 36 20 69 73 20 46 55 4E 21 shorthand 00110000 01110011 for binary! Other Character Encoding Schemes: IBM standardized an 8-bit scheme (256 chars) as defactostandard (PCs !) See Appendix I : overlaps with 7-bit ASCII for displayable chars J ava: unicode 16-bit scheme (65,536 chars) multi-lingual character sets SYSC3006 25 Programmers : Be Aware Important Concept !!!!!! fixed-width binary values are used to represent information in computers the computer works with the binary representations (NOT the information!!) the same binary value can be used to represent different information ! 8-bit example: 1111 0000 2 unsigned: 240 10 signed: 16 10 8-bit ASCII: other?