Download Representing Numbers - UCL Computer Science

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
Representing Numbers
B261 Systems Architecture
Previously
• Computer Architecture
– Common misconceptions
– Performance
• Instruction Set (MIPS)
– How data is moved inside a computer
– How instructions are executed
Outline
• Numbers
– Limitations of computer arithmetic
• How numbers are represented
internally
– Representing positive integers
– Representing negative integers
• Addition
• Bit-wise operations
Binary Representation
• Computers internally represent numbers in binary form
– The sequence of binary digits
» dn-1 dn-2 ... d1 d0 two
– At its simplest, this represents the decimal number which
is the sum of terms 2i for each di = 1.
» Eg, 10111two = 16ten+4ten+2ten+1ten = 23ten
» d0 is called the ‘least significant bit’ LSB
» dn-1 is called the ‘most significant bit’ MSB
– But we will need to use different meanings for the bits in
order to represent negative or floating-point numbers.
Range of Positive Numbers
and Word Lengths
• For an n-bit word length
• 2n different numbers can be represented
* including zero.
• 0,1,2,..., ((2n) -1)
(if only want +ve numbers)
• A 3-bit word length would support
• 0,1,2,3,4,5,6,7
• MIPS has a 32-bit word length
• 232 different numbers can be represented
• 0,1,2,..., ((232)-1)
(= 4,294,967,295).
Negative Numbers
• The range afforded by the word length must
simultaneously support both positive and negative
numbers, equally.
• Two requirements:
– There must be a way, within one word, to tell if it
represents a positive or negative number, and its value.
– A positive number x, and its complement (-x) must
clearly add to zero
» x + (-x) = 0.
Two’s Complement
• Example of n=3 bit word:
• 000 = 0
• 001 = 1
• 010 = 2
• 011 = 3
• 100 = -4
• 101 = -3
• 110 = -2
• 111 = -1
For positive numbers the
MSB (‘sign bit’) is always 0
For negative numbers the
MSB (‘sign bit’) is always 1
Two’s complement
• In general for a n-bit word
– There will be positive numbers (and zero)
» 0,1,2, … , ((2n-1) - 1)
– Negative numbers
» -(2n-1), … , -1
– The highest positive number is ((2n-1) - 1)
– The lowest negative numbers is -(2n-1 )
– Note the slight imbalance of positive and
negative.
Conversion
• For an n-bit word, suppose that dn-1 is
the sign bit.
– Then the decimal value is:
» (-dn-1)* (2n-1) + the usual conversion of the
remainder of the word.
– Eg, n=3, then
» 101 = (-1 * 4) + 0 + 1 = -4 + 1 = -3
» 011 = (0 * 4) + 2 + 1 = 0 + 3 = 3
Negating a Number
• There is a simple two-step process for
negation (eg, turn 3 = 011 into -3 = 101):
• invert every bit (e.g. replace 011 by 100)
• add 1 (e.g. 100+1 = 101).
• Example, 4-bit word 1101
• 1101 = -8 + 4 + 0 + 1 = -3
» 3 = 0011
» Invert bits: 1100
» add 1: 1101 = -3 as required.
Sign Extension
• Turning an n-bit representation into one
with more bits
– Eg, in 3 bits the number -3 is 101
– In 4 bits the number -3 is 1101
• Replicate the sign bit from the smaller
word into all extra slots of larger word
– For 5-bit word from 3 bits: 11101 = -3
– For 5-bit word from 4 bits: 11101 = -3
Integer Types
• Some languages (e.g. C++) support two
types of int: signed and unsigned.
• Signed integers have their MSB treated as
a sign bit
– so negative numbers can be represented
• Unsigned integers have their MSB treated
without such an interpretation (no
negative numbers).
Signed/Unsigned Int
• Suppose we had a 4-bit word, then
• int x;
» x could have range 0 to 7 positive
» and -8 to -1 negative
• unsigned int x;
» x has range 0 to 15 only.
Addition
• Addition is carried out in the same way
as decimal arithmetic:
» 0101
» 0001 +
» 0110
• Subtractions involve negating the
relevant number:
» 0101 - 0011 =
» 0101 + 1101 = 0010
Overflow
• Since there are only a fixed set of bits
available for arithmetic things can go
wrong:
• Consider n=4, and 0110 + 0101 (6+5).
» 0110
» 0101 +
» 1011
• But 1011 = -8 + 2 + 1 = -5 !
Overflow Examples
• Consider (6 - (-5))
• 0110 - 1011
» = 0110 + 0101
» = 1011
» = -8 + 3
» = -5
• -6 - 3
» = 1010 + 1101
» = 0111
»=7
Overflow Situations
•A+B
– where A>0, B>0, A+B too big, result negative
•A+B
– where A<0, B<0, A+B too small, result positive
•A-B
– where A>0, B<0, A-B too big, result negative
•A-B
– where A<0, B>0, A-B too small, result positive.
Bit Operations
• Shifts
– shift a word x bits to the right or left:
» 0110 shift left by 1 is 1100
» 0110 shift right by 1 is 0011
– In C++ shifts are expressed using <<,>>
» unsigned int y = x<<5, z = x>>3;
» means y is the value of x shifted 5 to left, and z is x
shifted 3 to the right.
– One application is multiplication/division by
powers of 2.
AND/OR
• AND is a bitwise operation on two words,
where for each corresponding bit a and b:
– a AND b = 1 only when a=1 and b=1, otherwise 0.
• OR is a bitwise operation, such that
– a OR b = 0 only if both a=0 and b=0, otherwise 1.
• For example:
– 1011 AND 0010 = 0010
– 1011 OR 0010 = 1011
New MIPS Operations
• add unsigned
– addu $1,$2,$3
» operands treated as unsigned ints.
• subtract unsigned
– subu $1,$2,$3
» operands treated as unsigned ints
• add immediate unsigned
– addiu $1,$2,10
» operands treated as unsigned ints
Exceptions
• Where the signed versions (add, addi,
etc) are used
– if there is overflow
» then an ‘exception’ is raised by the hardware
» control passes to a special procedure to
‘handle’ the exception, and then returns to the
next instruction after the one that raised the
exception.
More MIPS
• Load upper immediate
– lui $1,100
» $1 = 216 * 100
» (100, shifted left by 16 = upper half of the word).
• and, or, and immediate (andi), or
immediate (ori), shift left logical (sll), shift
right logical (srl)
– all of form $1,$2,$3 or $1,$2,10 (for immediate).
Summary
• Basic number representation (integers)
• Representation of negatives
• Basic arithmetic (+ and -)
• Logical operations
• Next time - building an ALU.