20.01.2014 Views

Digital aritmetik: Multiplikation och division. Talrepresentation

Digital aritmetik: Multiplikation och division. Talrepresentation

Digital aritmetik: Multiplikation och division. Talrepresentation

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

F6 : <strong>Digital</strong> Aritmetik II<br />

<strong>Talrepresentation</strong>er<br />

• Ett tal kan representeras binärt på många sätt.<br />

• De vanligaste taltyperna som skall representeras<br />

är:<br />

– Heltal, positiva heltal (eng. integers)<br />

• ett-komplementet, två-komplementet, sign-magnitude<br />

– Decimala tal med fix tal-område<br />

• Fix-tal (eng. Fixed point)<br />

– Decimala tal i olika talområden<br />

• Flyt-tal (eng. Floating point)<br />

p. 2 - IE1204 <strong>Digital</strong> Design - F6 - Johnny Öberg, ICT/ES


Heltal<br />

Positiva Heltal:<br />

-2 7<br />

0<br />

2 6 2 5 2 4 2 3 2 2 2 1 2 0<br />

1 1 0 1 1 0 1<br />

=1*2 6 + 1*2 5 + 1*2 3 + 1*2 2 + 1*2 0 = 109<br />

Negativa Heltal:<br />

2 6 2 5 2 4 2 3 2 2 2 1 2 0<br />

1<br />

1 1 0 1 1 0 1<br />

=-1*2 7 +1*2 6 + 1*2 5 + 1*2 3 + 1*2 2 + 1*2 0 = -19<br />

-2 7 p. 4 - IE1204 <strong>Digital</strong> Design - F6 - Johnny Öberg, ICT/ES<br />

p. 3 - IE1204 <strong>Digital</strong> Design - F6 - Johnny Öberg, ICT/ES<br />

<strong>Multiplikation</strong> av två (positiva) heltal<br />

0 0 1 0<br />

* 1 0 1 1<br />

0 0 1 0<br />

0 0 1 0<br />

0 0 0 0<br />

+ 0 0 1 0<br />

0 0 1 0 1 1 0<br />

2<br />

11<br />

22


<strong>Multiplikation</strong> med en teckenbit<br />

Teckenbiten har negativ vikt!<br />

=> Två-komplementera!<br />

0 0 1 0 2<br />

* 1 0 1 1 -5<br />

0 0 1 0<br />

0 0 1 0<br />

0 0 0 0<br />

+ 1 1 1 0<br />

1 1 1 0 1 1 0 -10<br />

p. 5 - IE1204 <strong>Digital</strong> Design - F6 - Johnny Öberg, ICT/ES<br />

Teckenbiten på det andra stället<br />

Teckenförläng!<br />

(Sign Extension)<br />

1 0 1 1 -5<br />

* 0 0 1 0 2<br />

0 0 0 0<br />

1 1 1 0 1 1<br />

0 0 0 0<br />

+ 0 0 0 0<br />

1 1 1 0 1 1 0 -10<br />

p. 6 - IE1204 <strong>Digital</strong> Design - F6 - Johnny Öberg, ICT/ES


<strong>Multiplikation</strong> av två negativa tal<br />

Teckenförläng!<br />

(Sign Extension)<br />

Teckenbiten har negativ vikt!<br />

=> Två-komplementera!<br />

1 0 1 1 -5<br />

* 1 0 1 1 -5<br />

1 1 1 1 0 1 1<br />

1 1 1 0 1 1<br />

0 0 0 0<br />

+ 0 1 0 1<br />

0 0 1 1 0 0 1 -25<br />

p. 7 - IE1204 <strong>Digital</strong> Design - F6 - Johnny Öberg, ICT/ES<br />

Lite mer detaljerat...<br />

1 0 1 1 -5<br />

* 1 0 1 1 -5<br />

1 1 1 1 0 1 1<br />

+ 1 1 1 0 1 1<br />

1 1 1 0 0 0 1<br />

0 0 0 0<br />

+ 0 1 0 1<br />

(1) 0 0 1 1 0 0 1 25<br />

p. 8 - IE1204 <strong>Digital</strong> Design - F6 - Johnny Öberg, ICT/ES


Eller så gör vi det enkelt för oss...<br />

• Använd enbart positiva tal i multiplikationen<br />

– Konvertera till positiva tal<br />

– Håll reda på resultatets tecken<br />

(+,+)=>+; (+,-)=>-; (-,+)=>-; (-,-)=>+<br />

– Två-komplementera till negativt tal om nödvändigt<br />

p. 9 - IE1204 <strong>Digital</strong> Design - F6 - Johnny Öberg, ICT/ES<br />

En enkel lösning (forts.)<br />

Sign A<br />

A N-1 A N-2 A 0<br />

0 1<br />

0 0 1<br />

Sign<br />

...<br />

B<br />

1 1 0<br />

HA HA ... HA<br />

F invert =S A xor S B<br />

2’s complement of A<br />

p. 10 - IE1204 <strong>Digital</strong> Design - F6 - Johnny Öberg, ICT/ES


Multiplikatorn (två positiva tal)<br />

T MUL =~(3*N-4)*T FA<br />

0 a(3) a(3) a(2) a(2) a(1) a(1) a(0) a(0) 0<br />

b(0)<br />

b(1)<br />

FA FA FA<br />

a(3) a(2) a(1) a(0)<br />

FA<br />

FA<br />

b(2)<br />

FA FA FA<br />

a(3) a(2) a(1) a(0)<br />

FA<br />

b(3)<br />

FA<br />

FA<br />

FA<br />

FA<br />

q(7) q(6) q(5) q(4) q(3) q(2) q(1) q(0)<br />

p. 11 - IE1204 <strong>Digital</strong> Design - F6 - Johnny Öberg, ICT/ES<br />

En snabbare lösning -<br />

Carry-Save Adders<br />

T MUL =~(2*N-2)*T FA<br />

0 a(3) a(3) a(2) a(2) a(1) a(1) a(0) a(0) 0<br />

b(0)<br />

b(1)<br />

FA FA FA<br />

a(3) a(2) a(1) a(0)<br />

HA<br />

b(2)<br />

FA FA FA<br />

a(3) a(2) a(1) a(0)<br />

FA<br />

b(3)<br />

FA<br />

FA<br />

FA<br />

FA<br />

q(7) q(6) q(5) q(4) q(3) q(2) q(1) q(0)<br />

p. 12 - IE1204 <strong>Digital</strong> Design - F6 - Johnny Öberg, ICT/ES


<strong>Multiplikation</strong> med 2<br />

0101*2=1010 (5*2=10)<br />

1010*2=10100 (-6*2=-12)<br />

01010101*2=010101010 (85*2=190)<br />

10010101*2 = 100101010 (-107*2=-214)<br />

jmfr multiplikation med 10 i basen 10:<br />

63*10 = 630, -63*10=-630 etc.<br />

p. 13 - IE1204 <strong>Digital</strong> Design - F6 - Johnny Öberg, ICT/ES<br />

<strong>Multiplikation</strong> med 2 n<br />

0101*2=1010 (5*2=10)<br />

0101*2 2 =10100 (5*4=20)<br />

0101*2 3 =101000 (5*8=40)<br />

0101*2 4 =1010000 (5*16=80)<br />

jmfr multiplikation med 10 i basen 10:<br />

6*10 = 60, 6*100=600, 6*1000=6000 etc.<br />

p. 14 - IE1204 <strong>Digital</strong> Design - F6 - Johnny Öberg, ICT/ES


Barrel-shiftern<br />

A 0<br />

A 1<br />

A 2<br />

A 3<br />

B 0<br />

0 0 0<br />

0 0 0<br />

0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3<br />

B 1<br />

<strong>Multiplikation</strong> med (2 0 , 2 1 , 2 2 , 2 3 ) – dvs 1, 2, 4, 8<br />

p. 15 - IE1204 <strong>Digital</strong> Design - F6 - Johnny Öberg, ICT/ES<br />

Booth-encoding<br />

01111 15 = 16-1<br />

0 0 1 0<br />

* 1 1 1 1<br />

0 0 1 0<br />

0 0 1 0<br />

0 0 1 0<br />

+ 0 0 1 0<br />

0 0 1 1 1 1 0<br />

→ 2*15=2*(16-1)<br />

0010*16 = 0010*2 4 =100000<br />

0 1 0 0 0 0 0<br />

- 0 0 0 0 0 1 0<br />

0 1 0 0 0 0 0<br />

+ 1 1 1 1 1 1 0<br />

0 0 1 1 1 1 0<br />

p. 16 - IE1204 <strong>Digital</strong> Design - F6 - Johnny Öberg, ICT/ES


Division mellan två (positiva) heltal<br />

(BV sid 693 – Fig 10.21 b)<br />

0 1 0 1<br />

1 0 1 0 1 1<br />

- 1 0<br />

0 0 1<br />

- 0 0<br />

0 1 1<br />

- 1 0<br />

1<br />

11/2 = 5<br />

Rest = 1<br />

p. 17 - IE1204 <strong>Digital</strong> Design - F6 - Johnny Öberg, ICT/ES<br />

Lite mer detaljerat...<br />

0 1 0 1<br />

1 0 0 1 0 1 1<br />

- 0 0<br />

1 0<br />

- 1 0<br />

0 0 1<br />

- 0 0<br />

0 1 1<br />

- 1 0<br />

1<br />

11/2 = 5<br />

Rest = 1<br />

p. 18 - IE1204 <strong>Digital</strong> Design - F6 - Johnny Öberg, ICT/ES


Divideraren<br />

Täljare<br />

Från fg steg<br />

n-bit SUB<br />

Täljare<br />

Res < 0 ?<br />

Y/N<br />

1 0<br />

MUX<br />

Kvot i<br />

Till nästa steg<br />

p. 19 - IE1204 <strong>Digital</strong> Design - F6 - Johnny Öberg, ICT/ES<br />

Divideraren (forts.)<br />

0 b(1) a(3)<br />

b(0)<br />

1<br />

b(1)<br />

a(1)<br />

b(0)<br />

FA<br />

FA<br />

1<br />

q(1)<br />

FA<br />

FA<br />

FA<br />

1<br />

q(3)<br />

1 0<br />

b(1)<br />

FA<br />

a(2)<br />

b(0)<br />

1<br />

FA<br />

q(0)<br />

1 0<br />

1<br />

FA<br />

1 0<br />

FA<br />

1 0<br />

b(1)<br />

a(0)<br />

b(0)<br />

FA<br />

1 0<br />

1<br />

q(2)<br />

1 0 1 0<br />

r(1)<br />

r(0)<br />

p. 20 - IE1204 <strong>Digital</strong> Design - F6 - Johnny Öberg, ICT/ES


Using a multiplier and a ROM for<br />

<strong>division</strong><br />

Q=A/B=A*(1/B)<br />

• Properties<br />

- Fast<br />

- VERY big!!<br />

ROM<br />

MUL<br />

p. 21 - IE1204 <strong>Digital</strong> Design - F6 - Johnny Öberg, ICT/ES<br />

Division med negativa heltal<br />

• Division med negativa tal är ganska knepigt.<br />

• Ett sätt att utföra <strong>division</strong>en ändå<br />

– Konvertera till positiva tal<br />

– Håll reda på resultatets tecken<br />

(+,+)-=>+, (+,-)=>-, (-,+)=>-, (-,-)=>+<br />

– Två-komplementera till negativt tal om nödvändigt<br />

p. 22 - IE1204 <strong>Digital</strong> Design - F6 - Johnny Öberg, ICT/ES


Division med 2<br />

01010/2=00101 (10/2=5)<br />

10100/2=11010 (-12/2=-6)<br />

jmfr <strong>division</strong> med 10 i basen 10:<br />

630/10 = 63, -630/10=-63 etc.<br />

p. 23 - IE1204 <strong>Digital</strong> Design - F6 - Johnny Öberg, ICT/ES<br />

Logiskt vs Aritmetisk shift höger<br />

• Man skiljer mellan logisk <strong>och</strong> aritmetiskt shift<br />

– Logisk shift höger shiftar bara till höger. Bitarna skall ej<br />

tolkas som ett tal. Man fyller bara på med 0:or.<br />

– Aritmetisk shift höger behandlar bitarna som ett tal.<br />

Teckenbiten behålls vid shift. Man fyller på till vänster<br />

med teckenbiten.<br />

p. 24 - IE1204 <strong>Digital</strong> Design - F6 - Johnny Öberg, ICT/ES


Division med 2 n<br />

1010/2=101 (10/2=5)<br />

10100/2 2 =101 (20/4=5)<br />

101000/2 3 =101 (40/8=5)<br />

1010000/2 4 =101 (80/16=5)<br />

jmfr <strong>division</strong> med 10 i basen 10:<br />

60/10 = 6, 600/100=6, 6000/1000=6 etc.<br />

p. 25 - IE1204 <strong>Digital</strong> Design - F6 - Johnny Öberg, ICT/ES<br />

Barrel-shiftern (2)<br />

A 0<br />

A 1<br />

A 2<br />

A 3<br />

A 4<br />

A 5<br />

A 6<br />

B 0<br />

0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3<br />

B 1<br />

Division med (2 0 , 2 1 , 2 2 , 2 3 ) – dvs 1, 2, 4, 8<br />

p. 26 - IE1204 <strong>Digital</strong> Design - F6 - Johnny Öberg, ICT/ES


Heltals-representation kan orsaka<br />

overflow<br />

• Addition:<br />

• Multiplication:<br />

(011) 2 + (010) 2 = (101) 2 (011) 2 * (010) 2 = (110) 2<br />

(3) 10 + (2) 10 = (-3) 10<br />

(3) 10 * (2) 10 = (-2) 10<br />

(011)<br />

• Subtraction:<br />

2 * (011) 2 = (001) 2<br />

(3)<br />

(110) 2 - (011) 2 = (011) 10 * (3) 10 = (1) 10<br />

2<br />

(-2) 10 - (3) 10 = (3) 10<br />

p. 27 - IE1204 <strong>Digital</strong> Design - F6 - Johnny Öberg, ICT/ES<br />

Fixed-Point Numbers<br />

Två-komplementsrepresentation<br />

B=b N-1 . b N-2 ...b 1 b 0<br />

where b i ∈{0,1}<br />

b N-1 b N-2 ... b 1 b 0<br />

Sign Bit<br />

Fixed-Point Value<br />

FiP(B)=-b N-1 2 0 +b N-2 2 -1 +...+b 1 2 -(N-2) +b 0 2 -(N-1)<br />

Detta format kallas också för Q N-1 -format eller<br />

fractional representation<br />

p. 28 - IE1204 <strong>Digital</strong> Design - F6 - Johnny Öberg, ICT/ES


Fixed-Point<br />

Q2-Representation<br />

000<br />

111<br />

0<br />

001<br />

-0.25<br />

0.25<br />

110<br />

-0.5<br />

0.5<br />

010<br />

-0.75 0.75<br />

101 -1 011<br />

100<br />

p. 29 - IE1204 <strong>Digital</strong> Design - F6 - Johnny Öberg, ICT/ES<br />

<strong>Multiplikation</strong> i Q-formatet<br />

• <strong>Multiplikation</strong> orsakar inte overflow i Q-formatet, men kan resultera i<br />

förlust av precision<br />

(1.10) 2 * (0.11) 2<br />

= (1.1010) 2 (Q4-format)<br />

= (1.10) 2 (Q2-format)<br />

Generellt:<br />

b 2 b 1 b 0<br />

Q2<br />

*<br />

b 2 b 1 b 0<br />

Q2<br />

Utökade teckenbitar<br />

b 5<br />

b 4 b 3 b 2 b 1 b 0<br />

Q4<br />

p. 30 - IE1204 <strong>Digital</strong> Design - F6 - Johnny Öberg, ICT/ES


<strong>Multiplikation</strong> i Q-formatet<br />

Sign Extension<br />

Discarded<br />

Negation<br />

Twos complement + 1<br />

0.11 * 1.10<br />

1.110<br />

1.1110<br />

11.1010<br />

1.10 * 0.11<br />

1.01<br />

0.011<br />

1.101<br />

Do not forget sign extension!<br />

p. 31 - IE1204 <strong>Digital</strong> Design - F6 - Johnny Öberg, ICT/ES<br />

Flyt-tal (eng. Floating-Point Numbers)<br />

• Ett flyt-tal representeras med en tecken-bit,<br />

exponent-bitar <strong>och</strong> en mantissa (ä.k. fraktions-bitar)<br />

S Exponent Mantissa<br />

Sign-Bit exp m<br />

• Värdet beräknas som<br />

FlP(B) = (-1) s * (1.m) * 2 ±exp<br />

• Ofta är exp biaserad (har en offset), vilket då ger<br />

FlP(B) = (-1) s * (1.m) * 2 exp-(bias)<br />

p. 32 - IE1204 <strong>Digital</strong> Design - F6 - Johnny Öberg, ICT/ES


IEEE-754<br />

• Flyttals-standarden IEEE-754 definierar ett 32-bit<br />

flyttal som<br />

S<br />

2 7 exp 2 0 2 -1 m 2 -23<br />

Exponent<br />

Mantissa<br />

32 31 exp 23 22 m 1<br />

• Värdet beräknas för en 8-bitars exponent enligt nedan<br />

FlP(B) = (-1) s * (1.m) * 2 exp-(127)<br />

• Specialla bit pattern har reserverats för att representera<br />

negativ <strong>och</strong> positiv nolla<br />

p. 33 - IE1204 <strong>Digital</strong> Design - F6 - Johnny Öberg, ICT/ES<br />

Floating-Point Numbers (IEEE)<br />

• Exponent Values 1 to 254: normalized non-zero floating-point<br />

numbers; biased exponent (-126...+127)<br />

• Exponent of zero and fraction of zero: positive or negative zero<br />

• Exponent of ones and fraction of zero: positive or negative<br />

infinity<br />

• Exponent of zero and fraction of non-zero: Denormalized<br />

number (true exponent is –126), represent numbers from<br />

0 to 2 -126<br />

FlP(B) = (-1) s * (0.m) * 2 -126<br />

• Exponent of ones with a non-zero fraction: NotANumber<br />

(Exception Condition)<br />

• There is also a standard for a 64-bit number<br />

p. 34 - IE1204 <strong>Digital</strong> Design - F6 - Johnny Öberg, ICT/ES


Addition med flyttal<br />

• Givet två flyttal:<br />

a =<br />

a<br />

frac<br />

⋅ 2<br />

a<br />

exp<br />

exp<br />

b = b<br />

frac<br />

⋅ 2<br />

• Summan av dessa tal är:<br />

b<br />

c<br />

=<br />

a + b<br />

=<br />

⎪⎧<br />

( a<br />

⎨<br />

⎪⎩ ( b<br />

frac<br />

frac<br />

+ ( b<br />

+ ( a<br />

frac<br />

frac<br />

⋅ 2<br />

⋅ 2<br />

−(<br />

a<br />

−(<br />

b<br />

exp<br />

exp<br />

−b<br />

−a<br />

exp<br />

exp<br />

)<br />

)<br />

)) * 2<br />

)) * 2<br />

a<br />

b<br />

exp<br />

exp<br />

, if<br />

, if<br />

a<br />

b<br />

exp<br />

exp<br />

≥ b<br />

≥ a<br />

exp<br />

exp<br />

p. 35 - IE1204 <strong>Digital</strong> Design - F6 - Johnny Öberg, ICT/ES<br />

Subtraktion med flyttal<br />

• Givet två flyttal:<br />

a =<br />

a<br />

frac<br />

⋅ 2<br />

a<br />

exp<br />

exp<br />

b = b<br />

frac<br />

⋅ 2<br />

• Differensen mellan dessa tal är:<br />

b<br />

c<br />

=<br />

a − b<br />

=<br />

⎪⎧<br />

( a<br />

⎨<br />

⎪⎩ ( b<br />

frac<br />

frac<br />

− ( b<br />

− ( a<br />

frac<br />

frac<br />

⋅ 2<br />

⋅ 2<br />

−(<br />

a<br />

−(<br />

b<br />

exp<br />

exp<br />

−b<br />

−a<br />

exp<br />

exp<br />

)<br />

)<br />

)) * 2<br />

)) * 2<br />

a<br />

b<br />

exp<br />

exp<br />

, if<br />

, if<br />

a<br />

b<br />

exp<br />

exp<br />

≥ b<br />

≥ a<br />

exp<br />

exp<br />

p. 36 - IE1204 <strong>Digital</strong> Design - F6 - Johnny Öberg, ICT/ES


<strong>Multiplikation</strong> med flyttal<br />

• Givet två flyttal:<br />

a = a<br />

frac<br />

⋅ 2<br />

exp<br />

b = b<br />

frac<br />

⋅ 2<br />

• Produkten av dessa tal är:<br />

b<br />

a<br />

exp<br />

c<br />

=<br />

=<br />

a * b<br />

aexp<br />

+ bexp<br />

( * ⋅ 2 )<br />

a frac<br />

b frac<br />

p. 37 - IE1204 <strong>Digital</strong> Design - F6 - Johnny Öberg, ICT/ES<br />

• Givet två flyttal:<br />

a = a<br />

Division med flyttal<br />

frac<br />

⋅ 2<br />

exp<br />

b = b<br />

frac<br />

⋅ 2<br />

• Kvoten mellan dessa tal är:<br />

c = a / b<br />

=<br />

b<br />

a<br />

exp<br />

aexp<br />

−bexp<br />

( / ⋅ 2 )<br />

a frac<br />

b frac<br />

p. 38 - IE1204 <strong>Digital</strong> Design - F6 - Johnny Öberg, ICT/ES


– Om exponenten är noll är mantissans första bit 0<br />

2exp-(127) * (1.m) (-1)s* = FlP(B)<br />

Uppstädning efter flyttalsoperationer...<br />

• När en flyttals-operation är klar måste den<br />

normaliseras<br />

– Mantissans skiftas tills dess första bit är 1<br />

– För varje skift-steg så räknas exponenten upp eller ned<br />

med ett.<br />

– Mantissans bitar till höger om den första ettan sparas<br />

p. 39 - IE1204 <strong>Digital</strong> Design - F6 - Johnny Öberg, ICT/ES<br />

= (-1)s*(0.m)* 2-(126) FlP(B)<br />

Number representation criteria<br />

Q2<br />

Dynamic Range (neg.) = 4 Dynamic Range (pos.) = 3<br />

-1<br />

100<br />

-0.75<br />

101<br />

-0.5<br />

110<br />

-0.375<br />

MQE: 0.125<br />

-0.25<br />

111<br />

• Maximum Quantization Error:<br />

– Since not all numbers can be represented, quantization errors<br />

occur.<br />

• Dynamic Range:<br />

– Ratio between largest and smallest number that can be<br />

represented<br />

p. 40 - IE1204 <strong>Digital</strong> Design - F6 - Johnny Öberg, ICT/ES<br />

0<br />

000<br />

0.25<br />

001<br />

0.5<br />

010<br />

0.6<br />

QE: 0.1<br />

0.75<br />

011


Fixed-Point vs. Floating-Point<br />

• Fixed-Point operationer fungerar pss som heltalsoperations<br />

<strong>och</strong> är snabbare<br />

• Fixed-point värden behöver skalas, vilket ofta<br />

leder till förlust av precision<br />

• Kostnaden för att bygga hårdvara är signifikant<br />

större för flyttals-processorer/räknare<br />

p. 41 - IE1204 <strong>Digital</strong> Design - F6 - Johnny Öberg, ICT/ES<br />

Sammanfattning<br />

• <strong>Multiplikation</strong> <strong>och</strong> <strong>division</strong> av heltal<br />

– Konvertera negativa tal till sitt positiva ditto.<br />

– Utför multiplikationen eller <strong>division</strong>en<br />

– Håll reda på vilket tecken resultatet skall ha<br />

– Konvertera positivt resultat till sitt negativa ditto om resultatet skall<br />

vara negativt<br />

• <strong>Multiplikation</strong> med potenser av 2 (mul med 2 k)<br />

– Implementeras som ett skift till vänster med k steg<br />

• Division med potenser av 2 (div med 2 k)<br />

– Implementeras som ett (aritmetiskt) skift till höger med k steg.<br />

Teckenbiten kopieras till vänster.<br />

p. 42 - IE1204 <strong>Digital</strong> Design - F6 - Johnny Öberg, ICT/ES


<strong>Talrepresentation</strong>er<br />

• Ett tal kan representeras binärt på många sätt.<br />

• De vanligaste taltyperna som skall representeras<br />

är:<br />

– Heltal, positiva heltal (eng. integers)<br />

• ett-komplementet, två-komplementet, sign-magnitude<br />

– Decimala tal med fix tal-område<br />

• Fix-tal (eng. Fixed point)<br />

– Decimala tal i olika talområden<br />

• Flyt-tal (eng. Floating point)<br />

p. 43 - IE1204 <strong>Digital</strong> Design - F6 - Johnny Öberg, ICT/ES<br />

Fix-tal (eng. Fixed Point)<br />

• Fixed Point Format<br />

S<br />

Integer<br />

Fraction<br />

• S<br />

Sign bit in two’s complement. S=-2 n<br />

• Integer The whole part of the number<br />

• Fraction The fraction part of the number<br />

A fixed point number can be treated as an integer where the<br />

binary point is fixed to a placed indicated by the fraction scale<br />

2 m . Thus, a real number R in the fixed point format is<br />

represented as the integer floor(r*2 m ).<br />

p. 44 - IE1204 <strong>Digital</strong> Design - F6 - Johnny Öberg, ICT/ES


Flyt-tal (eng. Floating Point)<br />

• IEEE Floating Point Format<br />

S<br />

Exp<br />

Mantissa<br />

• S Sign-bit of the number. S=1 means negative numbers.<br />

• Exp The exponent (power of 2) of the number. In the IEEE<br />

single format, Excess-127 coding is used, i.e., the number<br />

127 has been added to the exponents real value. Thus,<br />

Exp=254 means that the real exponent is +127, Exp=127<br />

is equivalent to 0, and 1 is equivalent to -126. Exp=255 is<br />

reserved for Inf and NaN. Exp=0 has special meaning<br />

• Mantissa The fraction part of the number, stored as<br />

1.xxxxx. The first bit is always one, and is therefore<br />

not stored. However, if Exp=0, the number is interpreted<br />

as 0.xxxxx to allow for gradual underflow.<br />

p. 45 - IE1204 <strong>Digital</strong> Design - F6 - Johnny Öberg, ICT/ES

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!