23
Representing Numbers B261 Systems Architecture

Representing Numbers

  • Upload
    chaela

  • View
    92

  • Download
    1

Embed Size (px)

DESCRIPTION

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 - PowerPoint PPT Presentation

Citation preview

Page 1: Representing Numbers

Representing Numbers

B261 Systems Architecture

Page 2: Representing Numbers

Previously

• Computer Architecture– Common misconceptions– Performance

• Instruction Set (MIPS)– How data is moved inside a computer– How instructions are executed

Page 3: Representing Numbers

Outline

• Numbers– Limitations of computer arithmetic

• How numbers are represented internally– Representing positive integers – Representing negative integers

• Addition• Bit-wise operations

Page 4: Representing Numbers

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.

Page 5: Representing 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).

Page 6: Representing Numbers

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.

Page 7: Representing Numbers

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 negative numbers the MSB (‘sign bit’) is always 1

For positive numbers the MSB (‘sign bit’) is always 0

Page 8: Representing Numbers

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.

Page 9: Representing Numbers

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

Page 10: Representing Numbers

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.

Page 11: Representing Numbers

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

Page 12: Representing Numbers

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).

Page 13: Representing 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.

Page 14: Representing Numbers

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

Page 15: Representing Numbers

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 !

Page 16: Representing Numbers

Overflow Examples

• Consider (6 - (-5))• 0110 - 1011

»= 0110 + 0101»= 1011»= -8 + 3»= -5

• -6 - 3»= 1010 + 1101»= 0111»= 7

Page 17: Representing Numbers

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.

Page 18: Representing Numbers

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.

Page 19: Representing Numbers

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

Page 20: Representing Numbers

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

Page 21: Representing Numbers

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.

Page 22: Representing Numbers

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).

Page 23: Representing Numbers

Summary

• Basic number representation (integers)

• Representation of negatives• Basic arithmetic (+ and -)• Logical operations• Next time - building an ALU.