source: esimerkit/luennot/luento22/intel16.txt @ 2835

Revision 1473, 5.3 KB checked in by vesal, 5 years ago (diff)
Line 
1Liukuluvun esitys tietokoneessa
2===============================
3
4Kymmenjärjestelmässä esimerkiksi
5
6              -1        -2        -3
7  0.125 = 1*10   +  2*10   +  5*10
8
9Vastaavasti voidaan tulkita 2-järjestelmässä:
10
11            -1     -2      -4
12  0.1101 = 2    + 2     + 2
13
14
15Bittien merkitykset (IEEE 754):
16
17                  Sign      Exponent     Fraction   Bias
18Single Precision  1 [31]    8 [30-23]   23 [22-00]   127
19Double Precision  1 [63]   11 [62-52]   52 [51-00]  1023
20
21
22 10.000: 00000000 00000000 00000000 00000000 00000000 00000000 00100100 01000000
23  9.000: 00000000 00000000 00000000 00000000 00000000 00000000 00100010 01000000
24  8.000: 00000000 00000000 00000000 00000000 00000000 00000000 00100000 01000000
25  7.000: 00000000 00000000 00000000 00000000 00000000 00000000 00011100 01000000
26  6.000: 00000000 00000000 00000000 00000000 00000000 00000000 00011000 01000000
27  5.000: 00000000 00000000 00000000 00000000 00000000 00000000 00010100 01000000
28  4.000: 00000000 00000000 00000000 00000000 00000000 00000000 00010000 01000000
29  3.000: 00000000 00000000 00000000 00000000 00000000 00000000 00001000 01000000
30  2.000: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 01000000
31  1.000: 00000000 00000000 00000000 00000000 00000000 00000000 11110000 00111111
32  0.875: 00000000 00000000 00000000 00000000 00000000 00000000 11101100 00111111
33  0.800: 10011010 10011001 10011001 10011001 10011001 10011001 11101001 00111111
34  0.750: 00000000 00000000 00000000 00000000 00000000 00000000 11101000 00111111
35  0.500: 00000000 00000000 00000000 00000000 00000000 00000000 11100000 00111111
36  0.250: 00000000 00000000 00000000 00000000 00000000 00000000 11010000 00111111
37  0.100: 10011010 10011001 10011001 10011001 10011001 10011001 10111001 00111111
38  0.000: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
39 -0.100: 10011010 10011001 10011001 10011001 10011001 10011001 10111001 10111111
40 -1.000: 00000000 00000000 00000000 00000000 00000000 00000000 11110000 10111111
41 -2.000: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 11000000
42-10.000: 00000000 00000000 00000000 00000000 00000000 00000000 00100100 11000000
43
44 10.000: 00000000 00000000 00100000 01000001
45  9.000: 00000000 00000000 00010000 01000001
46  8.000: 00000000 00000000 00000000 01000001
47  7.000: 00000000 00000000 11100000 01000000
48  6.000: 00000000 00000000 11000000 01000000
49  5.000: 00000000 00000000 10100000 01000000
50  4.000: 00000000 00000000 10000000 01000000
51  3.000: 00000000 00000000 01000000 01000000
52  2.000: 00000000 00000000 00000000 01000000
53  1.000: 00000000 00000000 10000000 00111111
54  0.875: 00000000 00000000 01100000 00111111
55  0.800: 11001101 11001100 01001100 00111111
56  0.750: 00000000 00000000 01000000 00111111
57  0.500: 00000000 00000000 00000000 00111111
58  0.250: 00000000 00000000 10000000 00111110
59  0.100: 11001101 11001100 11001100 00111101
60  0.000: 00000000 00000000 00000000 00000000
61 -0.100: 11001101 11001100 11001100 10111101
62 -1.000: 00000000 00000000 10000000 10111111
63 -2.000: 00000000 00000000 00000000 11000000
64-10.000: 00000000 00000000 00100000 11000001
65
66     10: 00001010 00000000
67      9: 00001001 00000000
68      8: 00001000 00000000
69      7: 00000111 00000000
70      6: 00000110 00000000
71      5: 00000101 00000000
72      4: 00000100 00000000
73      3: 00000011 00000000
74      2: 00000010 00000000
75      1: 00000001 00000000
76      0: 00000000 00000000
77     -1: 11111111 11111111
78     -2: 11111110 11111111
79    -10: 11110110 11111111
80
81
82Esimerkiksi Intelillä on vähinten merkitsevä tavu ensin, eli
83
841.000: 00000000 00000000 10000000 00111111
85
86kirjoitetaan uuteen järjestykseen:
87
88 e| eksp    | mantissa
89 0 0111111 1 0000000 00000000 00000000
90
91tästä:
92
93 etumerkki:    0 (+)
94 eksponentti:  0111111 1  - 127 = 0
95 mantissa:     1.0000000 00000000 00000000
96
97 eli + 1*2^0
98
99
100  0.875: 00000000 00000000 01100000 00111111
101
102 e| eksp    | mantissa
103 0 0111111 0 1100000 00000000 00000000
104
105  eli + 1.11B * 2^-1 = (1 + 0.5 + 0.25)*2^-1 = 0.875
106
107
108  0.800: 11001101 11001100 01001100 00111111
109
110 e| eksp    | mantissa
111 0 0111111 0 1001100 11001100 11001101
112
113  + 1.1001100... * 2^-1  ~ 0.8
114
115
116Desimaaliluku voidaan muuttaa 2-järjestelmään seuraavasti:
117 1) Skaalaa luku välillä [1,2[ kertomalla tai jakamalla
118    toistuvasti 2:lla.  Tästä saadaan luvun eksponentti,
119    johon vielä lisätään bias (jettei tarvitse tallentaa
120    negatiivisia lukuja).
121
122 2) Koska näin tehden mantissan ensimmäinen bitti on aina
123    1, sitä ei merkitä.  Muut mantissan bitit saadaan kun
124    lukua kerrotaan aina 2:lla ja kokonaisosa siirretään
125    mantissan bitiksi.  Tätä jatketaan kunnes alkuperäinen
126    mantissa on 0 tai 2-järjestelmän mantissa on täynnä.
127
128Esimerkki -0.1
129  Normalisointi:
130    0.1  = 0.2*2^-1 = 0.4*2^-2 = 0.8*2^-3 = 1.6*2^-4
131
132  Lasketaan mantissa:
133    Ensimmäinen bitti  => 1  (jota ei merkitä)
134      0.6 * 2  = 1.2   => 1
135      0.2 * 2  = 0.4   => 0
136      0.4 * 2  = 0.8   => 0
137      0.8 * 2  = 1.6   => 1
138      0.6 * 2  = 1.2   => 1
139    josta jo huomataankin mantissan jakso
140
141    Siis:
142      Etumerkki:    -  => 1
143      Eksponentti  -4 + 127 = 123 => 0111 1011
144
145 e| eksp    | mantissa
146 1 0111101 1 1001100 11001100 11001100 (11... nostaa pyöristyksessä 1)
147 1 0111101 1 1001100 11001100 11001101
148
149Eli:
150 -0.100: 11001101 11001100 11001100 10111101
151
Note: See TracBrowser for help on using the repository browser.