Digital aritmetik: Multiplikation och division. Talrepresentation
Digital aritmetik: Multiplikation och division. Talrepresentation
Digital aritmetik: Multiplikation och division. Talrepresentation
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
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