0% found this document useful (0 votes)
8 views12 pages

Chapter3 1

The document explains the representation of negative numbers in a 32-bit system using 2's complement, allowing for the representation of both positive and negative integers. It details the arithmetic operations that can be performed directly without conversion, the distinction between signed and unsigned integers, and how to handle sign extension. Additionally, it discusses the implications of overflow in both signed and unsigned arithmetic operations.

Uploaded by

Namit Jain
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
8 views12 pages

Chapter3 1

The document explains the representation of negative numbers in a 32-bit system using 2's complement, allowing for the representation of both positive and negative integers. It details the arithmetic operations that can be performed directly without conversion, the distinction between signed and unsigned integers, and how to handle sign extension. Additionally, it discusses the implications of overflow in both signed and unsigned arithmetic operations.

Uploaded by

Namit Jain
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 12

Negative Numbers

32 bits can only represent 232 numbers – if we wish to also represent


negative numbers, we can represent 231 positive numbers (incl zero)
and 231 negative numbers

0000 0000 0000 0000 0000 0000 0000 0000two = 0ten


0000 0000 0000 0000 0000 0000 0000 0001two = 1ten

0111 1111 1111 1111 1111 1111 1111 1111two = 231-1

1000 0000 0000 0000 0000 0000 0000 0000two = -231


1000 0000 0000 0000 0000 0000 0000 0001two = -(231 – 1)
1000 0000 0000 0000 0000 0000 0000 0010two = -(231 – 2)

1111 1111 1111 1111 1111 1111 1111 1110two = -2
1111 1111 1111 1111 1111 1111 1111 1111two = -1
9
2’s Complement
0000 0000 0000 0000 0000 0000 0000 0000two = 0ten
0000 0000 0000 0000 0000 0000 0000 0001two = 1ten

0111 1111 1111 1111 1111 1111 1111 1111two = 231-1

1000 0000 0000 0000 0000 0000 0000 0000two = -231


1000 0000 0000 0000 0000 0000 0000 0001two = -(231 – 1)
1000 0000 0000 0000 0000 0000 0000 0010two = -(231 – 2)

1111 1111 1111 1111 1111 1111 1111 1110two = -2
1111 1111 1111 1111 1111 1111 1111 1111two = -1

Why is this representation favorable?


Consider the sum of 1 and -2 …. we get -1
Consider the sum of 2 and -1 …. we get +1

This format can directly undergo addition without any conversions!


Each number represents the quantity
x31 -231 + x30 230 + x29 229 + … + x1 21 + x0 20 10
2’s Complement
0000 0000 0000 0000 0000 0000 0000 0000two = 0ten
0000 0000 0000 0000 0000 0000 0000 0001two = 1ten

0111 1111 1111 1111 1111 1111 1111 1111two = 231-1

1000 0000 0000 0000 0000 0000 0000 0000two = -231


1000 0000 0000 0000 0000 0000 0000 0001two = -(231 – 1)
1000 0000 0000 0000 0000 0000 0000 0010two = -(231 – 2)

1111 1111 1111 1111 1111 1111 1111 1110two = -2
1111 1111 1111 1111 1111 1111 1111 1111two = -1

Note that the sum of a number x and its inverted representation x’ always
equals a string of 1s (-1).
x + x’ = -1
x’ + 1 = -x … hence, can compute the negative of a number by
-x = x’ + 1 inverting all bits and adding 1

Similarly, the sum of x and –x gives us all zeroes, with a carry of 1


In reality, x + (-x) = 2n … hence the name 2’s complement 11
Example

• Compute the 32-bit 2’s complement representations


for the following decimal numbers:
5, -5, -6

12
Example

• Compute the 32-bit 2’s complement representations


for the following decimal numbers:
5, -5, -6

5: 0000 0000 0000 0000 0000 0000 0000 0101


-5: 1111 1111 1111 1111 1111 1111 1111 1011
-6: 1111 1111 1111 1111 1111 1111 1111 1010

Given -5, verify that negating and adding 1 yields the


number 5

13
Signed / Unsigned

• The hardware recognizes two formats:

unsigned (corresponding to the C declaration unsigned int)


-- all numbers are positive, a 1 in the most significant bit
just means it is a really large number

signed (C declaration is signed int or just int)


-- numbers can be +/- , a 1 in the MSB means the number
is negative

This distinction enables us to represent twice as many


numbers when we’re sure that we don’t need negatives
14
MIPS Instructions

Consider a comparison instruction:


slt $t0, $t1, $zero
and $t1 contains the 32-bit number 1111 01…01

What gets stored in $t0?

15
MIPS Instructions

Consider a comparison instruction:


slt $t0, $t1, $zero
and $t1 contains the 32-bit number 1111 01…01

What gets stored in $t0?


The result depends on whether $t1 is a signed or unsigned
number – the compiler/programmer must track this and
accordingly use either slt or sltu

slt $t0, $t1, $zero stores 1 in $t0


sltu $t0, $t1, $zero stores 0 in $t0

16
Sign Extension

• Occasionally, 16-bit signed numbers must be converted


into 32-bit signed numbers – for example, when doing an
add with an immediate operand

• The conversion is simple: take the most significant bit and


use it to fill up the additional bits on the left – known as
sign extension

So 210 goes from 0000 0000 0000 0010 to


0000 0000 0000 0000 0000 0000 0000 0010

and -210 goes from 1111 1111 1111 1110 to


1111 1111 1111 1111 1111 1111 1111 1110
17
Alternative Representations

• The following two (intuitive) representations were discarded


because they required additional conversion steps before
arithmetic could be performed on the numbers

 sign-and-magnitude: the most significant bit represents


+/- and the remaining bits express the magnitude

 one’s complement: -x is represented by inverting all


the bits of x

Both representations above suffer from two zeroes

18
Addition and Subtraction

• Addition is similar to decimal arithmetic

• For subtraction, simply add the negative number – hence,


subtract A-B involves negating B’s bits, adding 1 and A

Source: H&P textbook

19
Overflows

• For an unsigned number, overflow happens when the last carry (1)
cannot be accommodated

• For a signed number, overflow happens when the most significant bit
is not the same as every bit to its left
 when the sum of two positive numbers is a negative result
 when the sum of two negative numbers is a positive result
 The sum of a positive and negative number will never overflow

• MIPS allows addu and subu instructions that work with unsigned
integers and never flag an overflow – to detect the overflow, other
instructions will have to be executed

20

You might also like