Liukuluvun esitys tietokoneessa =============================== Kymmenjärjestelmässä esimerkiksi -1 -2 -3 0.125 = 1*10 + 2*10 + 5*10 Vastaavasti voidaan tulkita 2-järjestelmässä: -1 -2 -4 0.1101 = 2 + 2 + 2 Bittien merkitykset (IEEE 754): Sign Exponent Fraction Bias Single Precision 1 [31] 8 [30-23] 23 [22-00] 127 Double Precision 1 [63] 11 [62-52] 52 [51-00] 1023 10.000: 00000000 00000000 00000000 00000000 00000000 00000000 00100100 01000000 9.000: 00000000 00000000 00000000 00000000 00000000 00000000 00100010 01000000 8.000: 00000000 00000000 00000000 00000000 00000000 00000000 00100000 01000000 7.000: 00000000 00000000 00000000 00000000 00000000 00000000 00011100 01000000 6.000: 00000000 00000000 00000000 00000000 00000000 00000000 00011000 01000000 5.000: 00000000 00000000 00000000 00000000 00000000 00000000 00010100 01000000 4.000: 00000000 00000000 00000000 00000000 00000000 00000000 00010000 01000000 3.000: 00000000 00000000 00000000 00000000 00000000 00000000 00001000 01000000 2.000: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 01000000 1.000: 00000000 00000000 00000000 00000000 00000000 00000000 11110000 00111111 0.875: 00000000 00000000 00000000 00000000 00000000 00000000 11101100 00111111 0.800: 10011010 10011001 10011001 10011001 10011001 10011001 11101001 00111111 0.750: 00000000 00000000 00000000 00000000 00000000 00000000 11101000 00111111 0.500: 00000000 00000000 00000000 00000000 00000000 00000000 11100000 00111111 0.250: 00000000 00000000 00000000 00000000 00000000 00000000 11010000 00111111 0.100: 10011010 10011001 10011001 10011001 10011001 10011001 10111001 00111111 0.000: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 -0.100: 10011010 10011001 10011001 10011001 10011001 10011001 10111001 10111111 -1.000: 00000000 00000000 00000000 00000000 00000000 00000000 11110000 10111111 -2.000: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 11000000 -10.000: 00000000 00000000 00000000 00000000 00000000 00000000 00100100 11000000 10.000: 00000000 00000000 00100000 01000001 9.000: 00000000 00000000 00010000 01000001 8.000: 00000000 00000000 00000000 01000001 7.000: 00000000 00000000 11100000 01000000 6.000: 00000000 00000000 11000000 01000000 5.000: 00000000 00000000 10100000 01000000 4.000: 00000000 00000000 10000000 01000000 3.000: 00000000 00000000 01000000 01000000 2.000: 00000000 00000000 00000000 01000000 1.000: 00000000 00000000 10000000 00111111 0.875: 00000000 00000000 01100000 00111111 0.800: 11001101 11001100 01001100 00111111 0.750: 00000000 00000000 01000000 00111111 0.500: 00000000 00000000 00000000 00111111 0.250: 00000000 00000000 10000000 00111110 0.100: 11001101 11001100 11001100 00111101 0.000: 00000000 00000000 00000000 00000000 -0.100: 11001101 11001100 11001100 10111101 -1.000: 00000000 00000000 10000000 10111111 -2.000: 00000000 00000000 00000000 11000000 -10.000: 00000000 00000000 00100000 11000001 10: 00001010 00000000 9: 00001001 00000000 8: 00001000 00000000 7: 00000111 00000000 6: 00000110 00000000 5: 00000101 00000000 4: 00000100 00000000 3: 00000011 00000000 2: 00000010 00000000 1: 00000001 00000000 0: 00000000 00000000 -1: 11111111 11111111 -2: 11111110 11111111 -10: 11110110 11111111 Esimerkiksi Intelillä on vähinten merkitsevä tavu ensin, eli 1.000: 00000000 00000000 10000000 00111111 kirjoitetaan uuteen järjestykseen: e| eksp | mantissa 0 0111111 1 0000000 00000000 00000000 tästä: etumerkki: 0 (+) eksponentti: 0111111 1 - 127 = 0 mantissa: 1.0000000 00000000 00000000 eli + 1*2^0 0.875: 00000000 00000000 01100000 00111111 e| eksp | mantissa 0 0111111 0 1100000 00000000 00000000 eli + 1.11B * 2^-1 = (1 + 0.5 + 0.25)*2^-1 = 0.875 0.800: 11001101 11001100 01001100 00111111 e| eksp | mantissa 0 0111111 0 1001100 11001100 11001101 + 1.1001100... * 2^-1 ~ 0.8 Desimaaliluku voidaan muuttaa 2-järjestelmään seuraavasti: 1) Skaalaa luku välillä [1,2[ kertomalla tai jakamalla toistuvasti 2:lla. Tästä saadaan luvun eksponentti, johon vielä lisätään bias (jettei tarvitse tallentaa negatiivisia lukuja). 2) Koska näin tehden mantissan ensimmäinen bitti on aina 1, sitä ei merkitä. Muut mantissan bitit saadaan kun lukua kerrotaan aina 2:lla ja kokonaisosa siirretään mantissan bitiksi. Tätä jatketaan kunnes alkuperäinen mantissa on 0 tai 2-järjestelmän mantissa on täynnä. Esimerkki -0.1 Normalisointi: 0.1 = 0.2*2^-1 = 0.4*2^-2 = 0.8*2^-3 = 1.6*2^-4 Lasketaan mantissa: Ensimmäinen bitti => 1 (jota ei merkitä) 0.6 * 2 = 1.2 => 1 0.2 * 2 = 0.4 => 0 0.4 * 2 = 0.8 => 0 0.8 * 2 = 1.6 => 1 0.6 * 2 = 1.2 => 1 josta jo huomataankin mantissan jakso Siis: Etumerkki: - => 1 Eksponentti -4 + 127 = 123 => 0111 1011 e| eksp | mantissa 1 0111101 1 1001100 11001100 11001100 (11... nostaa pyöristyksessä 1) 1 0111101 1 1001100 11001100 11001101 Eli: -0.100: 11001101 11001100 11001100 10111101