Presentation is loading. Please wait.

Presentation is loading. Please wait.

Ch3a- 2 EE/CS/CPE 3760 - Computer Organization  Seattle Pacific University Crunching Numbers Topics we need to explore Representing numbers on a computer.

Similar presentations


Presentation on theme: "Ch3a- 2 EE/CS/CPE 3760 - Computer Organization  Seattle Pacific University Crunching Numbers Topics we need to explore Representing numbers on a computer."— Presentation transcript:

1

2 Ch3a- 2 EE/CS/CPE 3760 - Computer Organization  Seattle Pacific University Crunching Numbers Topics we need to explore Representing numbers on a computer Negatives, too Hardware Alert! Building hardware to work with Floating Point numbers Building hardware to do logic and math And, Or Addition, Subtraction Comparisons Multiplication and Division

3 Ch3a- 3 EE/CS/CPE 3760 - Computer Organization  Seattle Pacific University Representation All data on a computer is represented in binary 32 bits of data may be: 32-bit unsigned integer 4 ASCII characters Single-precision IEEE floating point number Who knows... data: 1000 1001 0100 0110 0000 0101 0010 1000 As 32-bit unsigned integer: 2,303,067,432 As 32-bit 2’s complement integer: -1,991,899,864 As 4 ASCII characters: ‘??’, ‘F’, ENQ, ‘(‘ Note: Limited ASCII chart on p. 142

4 Ch3a- 4 EE/CS/CPE 3760 - Computer Organization  Seattle Pacific University ASCII Representation of Numbers Terminal I/O (keyboard, display) only deals with ASCII characters Typically, strings of characters “We’re #1” --> 87,101,44,114,101,32,35,49,0 NULL Termination Note that the number ‘1’ is represented by 49 Numbers in I/O consist of their ASCII representations To output 103, use ASCII values 49, 48, 51 (3 bytes) Outputting 103 (one byte) won’t work ‘1’, ‘0’, ‘3’ code for ‘g’

5 Ch3a- 5 EE/CS/CPE 3760 - Computer Organization  Seattle Pacific University Number Systems- Negative Numbers What about negative numbers? We need to represent numbers less than zero as well as zero or higher In n bits, we get 2 n combinations Make half positive, half negative... Sign bit: 0-->positive, 1-->negative 31 remaining bits for magnitude First method: use an extra bit for the sign 0 000 0000 0000 0000 0000 0000 0000 0101 1 000 0000 0000 0000 0000 0000 0000 0101 +5 -5

6 Ch3a- 6 EE/CS/CPE 3760 - Computer Organization  Seattle Pacific University Sign and Magnitude Representation Two different representations for 0! 0000 0111 0011 1011 1111 1110 1101 1100 1010 1001 1000 0110 0101 0100 0010 0001 +0 +1 +2 +3 +4 +5 +6 +7 -0 -2 -3 -4 -5 -6 -7 Note: Example is shown for 4-bit numbers Inner numbers: Binary representation Seven Positive Numbers and “Positive” Zero Seven Negative Numbers and “Negative” Zero Number range for n bits = +/- 2 n-1 -1 Three low order bits represent the magnitude: 0 (000) through 7 (111) Two discontinuities High order bit is sign: 0 = positive (or zero), 1 = negative

7 Ch3a- 7 EE/CS/CPE 3760 - Computer Organization  Seattle Pacific University Two’s Complement Representation Only one discontinuity now 0000 0111 0011 1011 1111 1110 1101 1100 1010 1001 1000 0110 0101 0100 0010 0001 +0 +1 +2 +3 +4 +5 +6 +7 -8 -7 -6 -5 -4 -3 -2 -1 Note: Example is shown for 4-bit numbers Inner numbers: Binary representation Eight Positive Numbers Re-order Negative Numbers to Eliminate Discontinuities Only one zero One extra negative number Note: Negative numbers still have 1 for MSB

8 Ch3a- 8 EE/CS/CPE 3760 - Computer Organization  Seattle Pacific University 2’s Complement Negation Method #1 To calculate the negative of a 2’s complement number: 1. Complement the entire number 2. Add one Examples: n = 0110= 6 complement n = 01000100 = 68 n = 10010000= -112 1001 add 1 -n =1010 = -6 complement 10111011 add 1 -n =10111100 = -68 complement 01101111 add 1 -n =01110000 = 112 WARNING: This is for calculating the negative of a number. There is no such thing as “taking the 2’s complement of a number”.

9 Ch3a- 9 EE/CS/CPE 3760 - Computer Organization  Seattle Pacific University 2’s Complement Negation Method #2 To calculate the negative of a 2’s complement number: 1. Starting at LSB, search to the left for the first one 2. Copy (unchanged) all of the bits to the right of the first one and the first one itself Examples: n = 0110= 6 -n = 10 = -6 copy complement n = 01000100 = 68 -n = 10010111 = -68 copy complement n = 10010000= -112 -n = 10000011 = 112 copy complement 3. Complement the remaining bits

10 Ch3a- 10 EE/CS/CPE 3760 - Computer Organization  Seattle Pacific University Adding Two’s Complement Numbers 4 + 3 7 0100 0011 0111 -4 + 3 1100 0011 1111 -4 + (-3) -7 1100 1101 11001 4 - 3 1 0100 1101 10001 Just add the complete numbers together. Sign taken care of automatically. Ignore carry-out (for now) A carry out from sign bit does not necessarily mean overflow!

11 Ch3a- 11 EE/CS/CPE 3760 - Computer Organization  Seattle Pacific University Overflow Add two positive numbers to get a negative number or two negative numbers to get a positive number Add two positive numbers to get a negative number or two negative numbers to get a positive number 5 + 3 = -8 -7 - 2 = +7 Overflow cannot occur when adding a positive and negative number together 0000 0111 0011 1011 1111 1110 1101 1100 1010 1001 1000 0110 0101 0100 0010 0001 +0 +1 +2 +3 +4 +5 +6 +7 -8 -7 -6 -5 -4 -3 -2 Overflow occurs when crossing discontinuity Not a discontinuity - No Overflow A carryout from the MSB could mean crossing at either of these places – One is OK, one is Overflow

12 Ch3a- 12 EE/CS/CPE 3760 - Computer Organization  Seattle Pacific University Detecting Overflow Overflow occurs when: We add two positive numbers and obtain a negative Looking at the sign bit (MSB): 0 + 0 0 C in 0 C out + + + 0 + 0 1 C in 0 C out + + - No overflowOverflow We add two negative numbers and obtain a positive 1 + 1 0 C in 1 C out - - + 1 + 1 1 C in 1 C out - - - OverflowNo Overflow Overflow when carry in to sign bit does not equal carry out C in C out Overflow 0110 1 + 0 0 C in 0 C out - + - No Overflow 1 1 + 0 1 C in 1 C out - + + No Overflow 0

13 Ch3a- 13 EE/CS/CPE 3760 - Computer Organization  Seattle Pacific University Signed and Unsigned operations Consider the following: $t0 = 0000 0000 0000 0000 0000 0000 0000 0101 $t1 = 1111 1111 1111 1111 1111 1111 1111 1001 execute: slt $s0, $t0, $t1 What’s the result? If we mean for $t0 to be 5 and $t1 to be 4,294,967,289 (treat as unsigned integers) then $s0 should get 1 If we mean for $t0 to be 5 and $t1 to be -7 (treat as signed integers) then $s0 should get 0 The default is to treat as signed integers Use sltu for unsigned integers

14 Ch3a- 14 EE/CS/CPE 3760 - Computer Organization  Seattle Pacific University Using more bits What’s different between 4-bit 2’s complement and 32-bit? MSB has moved from bit 3 to bit 31! Copy MSB of original number into all remaining bits 0111 1010 7 10 7 10 (32-bit 2’s comp.) -6 10 -6 10 (32-bit 2’s comp.) Sign Extension 0000 0000 0000 0000 0000 0000 00000111 1111 1111 1111 1111 1111 1111 11111010 4-bit 2’s comp. To convert from 4-bit 2’s complement to 32-bit: Copy all 4 bits to 4 Least significant bits of the 32-bit number.

15 Ch3a- 15 EE/CS/CPE 3760 - Computer Organization  Seattle Pacific University Loading a single byte from memory We can read a single 8-bit byte from memory location 3000 by using: lb $t0, 3000($0)# read byte at mem[3000] assuming mem[3000] = 0xF3, we get... $t0: 0xFFFFFFF3 (sign-extension for other 3 bytes) If we only want the byte at 3000 (without extension), used an unsigned load: lbu $t0, 3000($0)# read byte a mem[3000] $t0: 0x000000F3(no sign-extension) 0x prefix means Hex


Download ppt "Ch3a- 2 EE/CS/CPE 3760 - Computer Organization  Seattle Pacific University Crunching Numbers Topics we need to explore Representing numbers on a computer."

Similar presentations


Ads by Google