0% found this document useful (0 votes)
81 views

CHAPT4 1 Data Structures in Computers

This document discusses various methods for representing and converting between numeric data types in computers. It covers integer and floating point number representations, including binary, octal, decimal and hexadecimal systems. Conversion methods between bases are presented, including algorithms for converting between decimal, binary, and hexadecimal. Representations for negative integers using signed magnitude, one's complement, and two's complement are also summarized.

Uploaded by

Petro Baha
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
81 views

CHAPT4 1 Data Structures in Computers

This document discusses various methods for representing and converting between numeric data types in computers. It covers integer and floating point number representations, including binary, octal, decimal and hexadecimal systems. Conversion methods between bases are presented, including algorithms for converting between decimal, binary, and hexadecimal. Representations for negative integers using signed magnitude, one's complement, and two's complement are also summarized.

Uploaded by

Petro Baha
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 79

CS 251 INTRODUCTION TO

COMPTER ENGINEERING

Computer Data representation


and Computer Arithmetic

Data Representations
Most computers support a variety of data types.
Numeric: Integer: - Unsigned, signed
Binary Coded Decimal (BCD)
binary, ternary, octal,
Fractions
Floating point

Non-numeric: Character data


Boolean
String data

Positional Number Systems


Number systems are characterized by a
base or radix. e. g.
Decimal number with base 10 (or radix 10)
Binary numbers with base 2 (or radix 2)

General: radix R or base R:


Base or Radix of a number defines the
range of possible values a digit may have:
- e. g.
0 9 for decimal
0, 1 for binary

Positional Number Systems


The general form of determining the value
of the number is:-

The ds are generally 0, 1, ... R


Common notation: dddR

Base Conversion
Radix R - to - Decimal: Compute the expansion
Given a number with n total number of digits of radix R, and d be any

digit value in a position, then any radix can be converted to decimal by


using
n=dnRn++d0R0
e. g. Convert 2146 to decimal
2146 = [2 62] + [1 61] + [4 60] = 72 + 6 + 4 = 8210 or simply 82.

Decimal - to - Radix R
Successively divide the decimal number by the target radix and note the
remainder until the quotient is 0
The method is called base conversion with the remainder method
Last remainder is considered to be the most significant bit (msb) and the
first remainder to least significant bit (lsb)

Base Conversion
Decimal - to - Radix R (continuing)
e. g. Convert 8210 into radix 6.
Here target radix is 6
Integer
82 6
=
13
13 6
=
2
26
=
0
8210 = 2146

Remainder
4 --------- lsb
1
2 --------- msb

Radix R1 to Radix R2
Convert R1 to decimal first, then obtained decimal to R2:
that is [R1 to decimal to R2]

Base Conversion
Binary fraction to decimal
e. g. Convert 0.10112 to decimal
0.10112
=
[1 21] + [0 22] + [1 23] + [1 24]
=
0.5 + 0 + 0.125 + 0.0625
=
0.687510

Decimal fraction to binary


Multiply the fraction part of the decimal by the target
radix and recover any carriers in the integer position
Multiplication continues until a product of 1 is reached
e. g. Convert 0.687510 to binary ; [ here target radix is 2]
product carrier
0.6875 2
=
1.375 1 ------- msb
0.375 2
=
0.75 0
0.75 2
=
1.5
1
0.5 2
=
1.0
1 -------- lsb
0.687510 = 0.10112

Base Conversion
Non-terminating base 2 fraction
Sometimes 1.00 will not occur. In this case the process is
terminated after a suitable number of decimal places.
e. g. Convert 0.210 to binary; [here target radix is 2]
0.2 2
0.4 2
0.8 2
0.6 2
0.2 2
0.4 2

0.210

=
=
=
=
=
=
=

Product
Carrier
0.4
0 --------- msb
0.8
0
1.6
1
1.2
1
0.4
0 --------- lsb
0.8
repeating, no termination
0.00112

Base Conversion
Binary to Hexadecimal
Hexadecimal numbers are based on the hexadecimal
counting system formed on a base of 16
Consists of 16 different symbols : 0 9,A,B,C,D,E and F;
each corresponding to decimal numbers 0 15
They are used to represent or remember multi-bit binary
numbers
How:
Write down the full binary numbers
Split the number into groups of 4 bit each staring from
lsb
Convert each group into its equivalent decimal number,
and substitute the equivalent Hexadecimal digit for
each group

Base Conversion
Binary to Hexadecimal (continuing)
e. g. Convert 11100011011011012 to base 16
1110 0011 0110 1101
14
3
6
13
E
3
6
D
1110001101101101
=

E36D16

Hexadecimal to decimal convertion


follows the normal procedure of converting any radix
number to decimal number.

Exercise:
Convert 23.37510 to base 2 and prove if it is correct by
converting back the answer in base 2 to decimal

Base 10, 2, 8, 16 Number System


Decimal
(base 10)
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

Binary
(base 2)
0
1
10
11
100
101
110
111
1000
1001
1010
1011
1100
1101
1110
1111

Octal
(base 8)
0
1
2
3
4
5
6
7
10
11
12
13
14
15
16
17

Exercise: Show a column for Ternary (Base 3)

Hexadecimal
(Base 16)
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F

Conversion among Power of 2 bases


4 bits are used to represent a hexadecimal number
(base 16); 24 = 16, 4 being number of bits
Similarly: Base 2, 1 bit is used, 21 = 2
Base 4, 2 bits are used, 22 = 4
Base 8, 3 bits are used, 23 = 8
Converting among power of 2 base needs the
grouping of bits as per required base target. Grouping
starting at the lsb. Examples: 10112

= [102][112]

= 234

1010102 =

[1012][0102]

1010102 =

[102][102][102] = 2224

234 = [24][34]

= 528
= [102][112] = 10112

Fixed Point Numbers


A number in a fixed length computer register
that is understood to have its radix point in a
specific position is called a fixed-point
number
Common type is an integer which have the
radix point at far right, and for fractions is at
the far left
A series of N bits binary number can
represent 2N different decimal numbers
(possible bit patterns). Ranging from 0 up to
[2N 1], e. g.
For an 8 bit number, there are 2 8 = 256 possible
bit patterns, from 0 to 255 [that is 2 8 1]

Representation of Negative Integer Numbers


[Signed Numbers]

Four methods used:


Signed Magnitude
Ones Compliment
Twos Compliment
Biased or Excess representation

Sign-Magnitude
N bits can represent values from -(2 N-1 -1) to +(2N1 -1). There are two representations for 0; +0 and
-0.
one bit, usually the leftmost bit, represents the
sign of the number (0 for +, 1 for -), the remaining
bits specify the magnitude of the number. e. g.
+ 25 = 000110012 , msb = 0 showing a +ve number
- 25 = 100110012, msb = 1 showing a -ve

Sign-Magnitude (cont.)
Two representations for zeros:
+ 0 = 000000002
- 0 = 100000002

For an 8-bit representation; largest


number is +12710 and smallest number is
12710.
Arithmetic operations are complex, it is
performed by examining the msb as a sign
bit, hence stripping it off from the number.
e. g. +15 can be taken as 7 in a 4-bit
representation

Radix Complement and Diminished Radix


Complement
Radix complement in base b is called bs
complement
Diminished radix complement in base b is
called [b 1]s complement
In base 2, these number system and the
corresponding operations are familiar
under the names:
2s complement or twos complement in radix
complement and
1s complement or ones complement in
diminished complement

Ones Compliment
N-bits can represent values from; -(2 N-1-1) to +(2N-1
-1)
The negative of a value is obtained by inverting or
complementing each bit [0 to 1 and 1 to 0]
The procedure goes both ways from +ve to ve or
from ve to +ve
The msb is the sign bit [0 for +ve, 1 for ve]
Two representation for zero:
+0 = 000000002
-0 = 111111112

In 1s complement; the number and its negative


adds up to [2N 1].
For an 8-bit representation, the largest number is
+12710 and the smallest number is number -127 10

Twos Complement
N-bits number can represent values from: -2n-1 to
+(2n-1 -1)
The negative of a value is obtained by adding 1
to the ones compliment negative. Perform Ones
complement first the add 1
The procedure goes both ways from +ve to ve or
from ve to +ve
The msb is the sign bit [0 for +ve, 1 for ve]
One representation for zero:
+0 = 000000002
-0 = 000000002

In 2s complement; the number and its negative


adds up to [2N].
For an 8-bit representation, the largest number is
+12710 and the smallest number is number -12810

Twos Complement Cont.


Example: complement + 2510 to 2510
+2510 = 000110012
1s complement = 11100110 2
add 1

00000001 2

Answer

= 11100111 2

Alternative way of finding 2s complement:


Bring down all the trailing zeros
Bring down the first one (1) from right
complement all additional bits
e. g. convert 001100 2 to its twos complement
001100
00
100
110100 = 1101002

Benefits
One representation of zero
Arithmetic works easily (see later)
Negating is fairly easy
3 = 00000011
Boolean complement gives
Add 1 to LSB

11111100
11111101

Negation Special Case 1

0=
00000000
Bitwise not
11111111
Add 1 to LSB
+1
Result
1 00000000
Overflow is ignored, so:
-0=0

Negation Special Case 2

-128 =
10000000
bitwise not
01111111
Add 1 to LSB
+1
Result
10000000
So:
-(-128) = -128 X
Monitor MSB (sign bit)
It should change during negation

Excess (Biased) Representation


Msb is a sign bit; 0 for negative number, 1 for
Positive number
All numbers are represented by
first adding them to the bias [bias (b) = 2 n-1]
and then encoding this sum as an ordinary unsigned
number normally using 2s complement
i.e. [K + bias (b)]

For n-bits number can represent values from -b to +(2 n-1-b)


Since the bias is commonly chosen to be 2 n-1, this is yielding to
a range of -2n-1 to +(2n-1-1)
For example: convert 1210 to its complement using biased
method. Use 8-bits
1210
= 0000 11002
Bias = 28-1 = 27 = 128 = 1000 00002
adding
= 1000 11002
2s complement
= 0111 01002

Excess (Biased) Representation Cont.


Alternatively: positive and negative
representations of a number are obtained by
adding a bias to the twos complement
representation
e. g. +12 = 0000 11002
2s complement = 1111 01002
Add bias = 128 = 1000 00002
Answer

= 1 0111 0100

overflow ignored

One representation for zero: +0 = 100000002 -0


= 100000002
The procedure goes both ways from +ve to ve or
from ve to +ve
For an 8-bit representation, the largest number is
+12710 and the smallest number is number -12810

Floating Point Numbers


Floating point numbers allow very large and
very small numbers to be presented using only
few digits at the expense of precision.
The precision is primarily determined by the
number of digits in the fraction (or significand),
which has integer and fractional parts.
Many application require numbers that are not
integers. To represent this the commonly used
way is to use floating points
Floating point number is divided into two parts:
an exponent
A significand or mantissa
e. g. 1.5 2-3 = 0.1875

Normalization
Normalized representation places the
radix point immediately to the left of the
left most nonzero digit in the fraction
e. g. 254 = 0.254 103

Representation of a floating point number


is as shown: s

Exponent (e)

Significand or Mantissa

Representation of floating Point numbers


The exponent is a signed number
represented using a bias method with a
bias of 127
The fraction represents a number less
than 1, but the significand of the floating
point number is 1 plus the fraction part
If e is the biased exponent (value of the
exponent field), and f is the value of the
fraction field
then; the number is represented as
1.f 2e-127

IEEE 754 Floating Point Standard


In 1985 a standards committee of the Institute of
Electrical and Electronics Engineers (IEEE)
formulated and published a standard format for
binary floating point numbers.
The exponent is represented in "excess" or
"biased" form. This biased representation of the
exponent is called the characteristic.
Normally with an n-bit biased system the bias is
2 n-1, so that the largest exponent corresponds
to a characteristic containing n 1's. For an 8-bit
characteristic the bias would be 128 decimal.

IEEE 754 FORMATS

IEEE 754 FORMATS


However in the IEEE standard, 127 is chosen
as the bias so that the characteristic containing
all 1's can be used as a special case to
represent infinity. That is, + or - infinity are
represented by the appropriate sign bit followed
by all 1's in the characteristic and all 0's in the
mantissa.
32 and 64 bit standards
8 and 11 bit exponent respectively
These formats assume a normalized mantissa
of the form 1.M where M is the 23-bit or 52-bit
mantissa.

Representation of Floating Point Numbers


The exponent is a signed number represented
using the bias method with a bias 127
In radix 2, normalization corresponds to having a
fraction whose first bit (MSB) is 1. This leading bit
in the mantissa is often called the normal bit.
The fraction represents a number less than 1, but
the significand of the floating point number is 1
plus the fraction part
i. e. if e is the biased exponent (value of exponent
field) and f is the value of the fraction field
the number is represented as
1.f 2e-127

Since the leading bit (corresponding to the value 1) is


always present, it is omitted from the representation

Representation of Floating Point


Numbers
To obtaining the floating point representation of a number
requires generating each of the components, the sign bit,
the characteristic (i. e. biased representation of the
exponent) and the mantissa.
The sign bit is 1 for a negative value and 0 for a positive
value.
The mantissa is obtained by converting the decimal
number into a binary fraction.
Once the binary fraction is obtained, the significand is
generated by shifting the radix point to the proper position.
The number of places that the radix point is shifted
determines the exponent.
The excess or biased form of the exponent gives the
characteristic.

Examples of Floating Point Numbers


Example: Represent the following number
0.12510 into a single-precision binary
number.
Soln. Changing into binary
0.12510 = 0.0012
the number is +ve, then 0 for sign bit,
Normalizing = 1.0 2-3: 1.0 is the
significand, and from 1.f 2e-127; e 127 =
-3
then: e = -3+127 = 124 is the
characteristic (i. e. the biased exponent)

Examples of Floating Point Numbers


How would 763.510 be represented as a
single precision IEEE floating point number?
763.510 = 1011111011.12 = 1.0111110111 x 29
Hence the sign bit = 0; bse is a +ve number
the characteristic e = 9+127 = 13610 =
100010002
the 23-bit mantissa is
011 1110 1110 0000 0000 0000
The corresponding IEEE single precision
representation is

Examples of Floating Point Numbers

What single-precision number does the following


32 bit word represent:
1 1000 0001 010 0000 0000 0000 0000 00002
Soln.: msb = 1 indicates ve number
e = 1000 00012 = 27 + 20 = 129
hence 2e-127 = 2129-127 = 22
Fraction Part: Convert .012 into decimal = [0 21] + [1 22]
= 0.2510 making the significand of 1.25
Hence the number is 1.25 22 = - 5

Write in single-precision IEEE-754 format


+1.101 25
Soln. Since the number is +ve then sign bit is 0
From 1.f 2e-127: 1 is hidden
5 = e 127, then e = 132 = 1000 0010 = characteristic
Significand = 101 0000 0000 0000 0000 0000
Representation is: 0 1000 0010 101 0000 0000 0000 0000
0000

Coding
Coding is the representation of characters via a
character code in which each character is assigned
a unique combination of bits
Three most popular codes are:
BCDIC = Binary Coded Decimal Interchange Code
EBCDIC = Extended Binary Coded Decimal
Interchange Code
ASCII
= American Standard Code for Information
Interchange
Unicode

ASCII:

is a 7- bit code (128 characters) stored in 8 bit (byte)


Has an extended 8 bit version
Used on PCs and non IBM mainframes
widely used to transfer data from one computer to
another
Now beind replaced by Unicode

Coding
EBCDIC:
Is an 8 bit code (256 characters)
Used on mainframe IBM machine

Unicode:
is a 16 bit standard
can represent 65 thousand characters of
which 49,000 have been defined
incorporates ASCIII as subnet
Example ASCII coding:

ASCII Coding
CAD = 43414216
= 0100 0011 0100 0001 0100 00102
f1

= 463116
= 0100 0110 0011 00012

3415 = 3334313416
= 0011 0011 0011 0100 0011 0001
01012
Note that this is a text strong and no
arithmetic may be done in it
symbo
l

Code

41

4
2

43

44

55

46

30

31

32

33

34

35

36

37

Conversion Between Lengths

Positive number pack with leading zeros


+18 =
00010010
+18 = 00000000 00010010
Negative numbers pack with leading ones
-18 =
10010010
-18 = 11111111 10010010
i.e. pack with MSB (sign bit)

COMPUTER ARTHMETIC
Four basic arithmetic operations in a computer
Addition, subtraction, multiplication, and division

Significant issues include:

Fixed point arithmetic


Floating point arithmetic
Overflow
Underflow
Handling of signed number
Performance

Overflow occurs when:


Adding two positive numbers produces a negative
number or
Adding two negative numbers produces a positive
numb

Example of an Overflow
Add 8010 + 8010
Using decimal addition: 80 + 80 = 16010
Using binary: 80 = 0101 0000
80 = 0101 0000
160 = 1010 00002 = - 9610
How: Msb = 1 hence a negative number
Taking the twos compliment of 1010 000
= 0110 0000 = - 9610

Half and Full Adder


Half adders and full adders are the natural
components for addition
Half adder takes two bits a and b as input and
produces a sum bit s and a carry bit co as
output
Full adder takes three bits a, b and a carry c i
as an input and produces a sum bit s and and a
Addition Rules Full Adder
carry bit co as an output
A + B + ci

Addition rules Half


Adder
A+B
0
0
1
1

0
1
0
1

Carry

Sum

0
0
0
1

0
1
1
0

0
0
0
1
0
0
0
1
1

0
0
1
1
0

Carry

Sum

0
0
0
1
0
1
1
1

0
1
1
0
1
0
0
1

Ripple Carry Adder


Consists of n full adders
The carry-out of one full adder is
connected to the carry-in of the adder for
the next msb.
Two binary numbers A and B are added
from right to left creating a sum and a
carry at the output of each full adder for
each bit position

Ripple-Borrow Subtractor
A ripple-borrow subtractor can be
composed of a cascade of full
subtractors.
Two binary numbers A and B are
subtracted from right to left, creating
a difference and a borrow at the
Rules Full
outputs of each full Subtraction
subtractor
for
subtractor
each bit position.
a +b +
diff
bor
i

I+1

bori
0
0
0
0
1
1

0
0
1
1
0
0

0
1
0
1
0
1

0
0
0
1
0
1

0
1
1
0
1
0

Ripple-Borrow Subtractor

Combined Adder/Subtractor
A single ripple- carry adder can perform
both addition and subtraction, by forming
the twos complement negative for B when
subtracting. (Note that +1 is added at c0 for
twos complement.)

Addition and Subtraction


Normal binary addition
Monitor sign bit for overflow
Take twos compliment of subtrahend and
add to minuend
i.e. a - b = a + (-b)

So we only need addition and complement


circuits

Ones Complement Addition


An example of ones complement integer addition
with an end-around carry
1 0 0 1 12

(- 12)

0 1 1 0 12

(+13)

100000
+
1 ------------ End-around carry

0001
(+1)

The end-around carry is needed because there are


two representations for 0 in ones complement. Both
representations for 0 are visited when one or both
operands are negative.

Multiplication

Complex
Work out partial product for each digit
Take care with place value (column)
Add partial products
Multiplication of two 4-bits unsigned
binary integers produces an 8-bits result
Multiplication of two 4-bit signed binary
integers produces only a 7-bit result (each
operand reduces to a sign bit and a 3-bit
magnitude for each operand, producing a
sign-bit and a 6-bit result).

Multiplication Example

1011

x 1101

1011

0000

1011
1011
10001111
Note: need

Multiplicand (1110 )
Multiplier

(1310)

Partial product
Partial product
Partial product
Partial product
Product (143 10)
double length result

Unsigned Binary Multiplication (Right


Shift Procedure) using A Serial Multiplier
The unsigned numbers to be multiplied are
placed in registers A and B respectively
Register p is initially set to 0
Each multiply step has two parts:
If the least significant bit (lsb) of A is 1, then register
B is added to P: otherwise 00..00 is added to P. The
sum is placed back to P
Register P and A are shifted right, with the carry-out
of the sum being moved in the high-order bit (msb) of
P, the low-order bit (lsb) of P being moved into
register A, and the rightmost bit of A, which is not
used in rest of the algorithm being shifted out.

After n steps, the product appears in register p


and A, with A holding the lower-order bits.

Simplified Block diagram of a multiplier


Each multiplication step consists of adding
the contents of P to either B or 0
(depending on the low-order bit of A),
replacing P with sum, and shifting both P,
and A one bit right
Carry-out

Shift
C

Execution of Multiplication Example


Multiply 11012 10112
Register B: 1 1 0 1 -------Multiplicand (M), Initial value
C
0
0
0
1
0
0
0
1
0

Register
P
0000
1101
0110
0011
1001
1001
0100
0001
1000

Register
A or Q
1 0 1 1-------- Initial values. Note lsb of A is 1, then
1 0 1 1------- 1(a): add B to P, and sum to P
1 1 0 1 --------1(b): Shift one step right. Note Lsb of A is 1,then
1 1 0 1 --------2(a): Add B to P, and sum to P
1 1 1 0---------2(b): Shift one step right, Note lsb is 0, then
1 1 1 0---------3(a): Add 0000 to P, and sum to P, or skip addition
1 1 1 1---------3(b): Shift one step right, lsb of A is 1, then
1 1 1 1---------4(a): Add B to P, and sum to P
1 1 1 1---------4(b): Shift one step right

After n- steps, the product appear in register P and


A
Answer = 1 0 0 0 1 1 1 12 = 14310

Flow Chart for simplified Serial Multiplier Block


START

C, P = 0
B Multiplicand
A Multiplier
Count n

No

Yes
A0 =
1?

P= B + P

Shift right:
C, P, A.
Count = Count - 1

No

Yes
Count =
0?

End

Product= P, A

Unsigned Binary Multiplication

Flowchart for Unsigned Binary


Multiplication

Serial Divider
Operates the division of an unsigned number and
produces the quotient bits one at a time
From a b (a/b), put a in register A, b in
register B, 0 in register P and then perform n
divide steps
Each divide step consists of four parts:
Shift the register pair (P, A) one bit left
Subtract the content of register B (which has number b)
from register P, putting the result back into P
If the result of step 2 is negative, set the low-order bit
of A to 0, otherwise to 1
If the result of step 2 is negative, restore the old value
of P by adding the contents of register B back into P

Repeat this process n times


The A register will contain the quotient, and the P
register will contain the remainder

Simplified Block diagram of a Serial Divider

Each division step involves first shifting P


and A one bit left,subtracting B from P,
and if the different is nonnegative, putting
it into P. If the difference is nonnegative,
the low-order bit of A is set to 1.
Shift
P

Execution of Division Example


Divide 14/3 11102/00112
Register B: 0 0 0 1 1 -------Divisor (M), Initial value
Register
P
00000
00001
11110
11110
00001
00011
00000
00000
00001
11110
11110
00001
00010
11111
11111
00010

Register
1
1
1
1
1
1
1
1
0
0
0
0
0
0
0
0

1
1
1
1
1
0
0
0
0
0
0
0
1
1
1
1

1
0
0
0
0
0
0
0
1
1
1
1
0
0
0
0

A
0 -----Initial values.
-----1(i): shift one step left
-----1(ii): subtract P B, result put in P.
0 -----1(iii): msb = 1, result is ve,set Quotient bit A 0 to 0
0 -----1(iv): step 2 is ve, restore the old value of P
------2(i): shift left
------2(ii): subtract P-B, result in P
1 -----2(iii): msb = 0, +ve result, set A 0 to 1
----- 3(i): shift left
------3(ii): subtract P-B result in P
0 -----3(iii): msb = 1, -ve result, A 0 (lsb) = 0
0 -----3(iv): Step 2 ve, restore the old value of P
-----4(i): Shift left
-----4(ii): subtract P-B, result in P
0 -----4(iii): msb = 1, -ve result, A0 (lsb) = 0
0 -----4(iv): restore the old value of P

After n- steps, the Quotient appear in register A and Remainder in


register P Answer = 01002 rem 000102 = 410 rem 210

Division of Unsigned Binary Integers

00001101
Divisor
1011 10010011
1011
001110
Partial
1011
Remainders
001111
1011
100

Quotient
Dividend

Remainder

Flowchart for Unsigned Binary Division

Multiplying Negative Numbers


This does not work!
Solution 1
Convert to positive if required
Multiply as above
If signs were different, negate answer

Solution 2
Booths algorithm

Booths Algorithm
Booths Algorithm forms the basis for a
number of signed multiplication algorithms
It is based upon recording the multiplier,y, to
a recoded, value ,z, leaving the the
multiplicand ,x, unchanged
In booth recoding, each digit of the multiplier
can assume negative as well as positive and
zero
There are especial notation called signed
digit (SD) encoding, to express these signed
digits
In SD encoding; +1 and 0 are expressed as a
1 and 0, but 1 is expressed as 1.

Booths Algorithm
e. g. booth recoding recodes the no 7 as 8-1
7 = 8-1 = 10002 00012 = 1001
Where 1 represents 1 as above
If M is the multiplicand, A the accumulator register, Q the
multiplier and Q-1 the extra appended bit on the right of Q,
then Booth's algorithm may be executed as shown below:

1. Initialization
a. Load A and Q-1 with zeros.
b. Load M with the multiplicand
c. Load Q with the multiplier

2. Repeat n times:
a. If the Q0 = 0 and Q-1 = 0, add 0 to A. else
b. if the Q0 =0 and Q-1 =1, Add M to A. else
c. If the Q0 =1 and Q-1 =0, Subtract M from A. else
d. If the Q0 = 1 and Q-1 = 1 add 0 to A
e. Shift AQQ-1 one bit right using sign extension.

Booths Algorithm

Example of Booths Algorithm

Division
More complex than multiplication
Negative numbers are really bad!
Based on long division

FP Arithmetic +/ To add or subtract two floating point


numbers, their number points must be
aligned. This is the same as making their
exponents equal.
For example: 0.12510 = 0.12 2 -2

1.510 = 0.112 2

+1

Since the numbers will be normalized initially,


the exponents can only be adjusted by
shifting right. Otherwise, significant bits from
the fraction will be lost.
For each bit position that a mantissa is
shifted to the right, the exponent of the
number is increased by 1.

FP Arithmetic +/ Thus, to align the number points, the


value with the smaller exponent is shifted
right until its exponent matches that of
the other value
0.11012 2 +1 = 1.1012 = 1.62510

FP Arithmetic +/- Examples

Operands
Alignment
Normalization
6.144 102
0.06144 104 1.003644 105
+ 9.975 104 + 9.9975 104
10.03644 104
1.076 10-7 1.076 10-7
- 9.987 10-8 - 0.9987 10-7
0.0773 10-7

7.73 10-9

FP Addition & Subtraction Flowchart

FP Arithmetic x/

Check for zero


Add/subtract exponents
Multiply/divide significands (watch sign)
Normalize
All intermediate results should be in
double length storage

FP Arithmetic x/
i. e. The product of two floating point numbers is
computed by multiplying the two mantissas and
using the sum of the two exponents as the
exponent of the product. The product will be
normalized and the exponent adjusted accordingly.
(f1 x 2 e1 ) * (f2 x 2 e2 ) = (f3 x 2e3 )
where f3 = f1 x f2, and e3 = e1+e2.

The quotient of one number divided by another


has a mantissa equal to the quotient of the
dividends mantissa divided by the divisors
mantissa. The exponent of the quotient equals the
exponent of the dividend minus the exponent of
the divisor. Any required normalization is
performed after the division.
(f1 x 2e1 ) / (f2 x 2 e2 ) = (f3 x 2e3 )
where f3 = f1/f2, and e3 = e1-e2.

FP Arithmetic x/ Examples

Sign, Fraction, and Exponent


Normalization

(- 0.1403 10-4)
0.4238463 100
(+0.3021 105)
- 0.04238463 10-4+5

(- 0.9325 102)
109
(- 0.1002 10-6)
+ 9.306387 102-(-6)

+ 0.9306387

Floating Point Multiplication

Floating Point Division

Carry-Lookahead (CLA) Addition


Integer addition is the very important
operation in the computer, hence must be
performed in high-speed.
Carry-Lookahead is one among techniques
to perform high-speed integer addition
From the logic equation of a full Adder to
perform addition operation with ripple
carry, Carries are represented in terms of Gi
generate) and Pi (propagate) expressions.

Carry-Lookahead (CLA) Addition


ci is both the carry-in in the ith adder and
carry-out from the (i-1)th adder

Carry-Lookahead (CLA) Addition

You might also like