Coś pokręciłeś w opisie - masz dwa razy "koduje znak liczby".
Ogólnie kolejne bity części ułamkowej (jak się domyślam o to chodzi) mają wagi 1/2, 1/4, 1/8, 1/16 itd. Ogólnie dwa do kolejnych potęg ujemnych (2 do -1, 2 do -2, 2 do -3 itd).
0.634 to będzie tak:
- jest większe niż 1/2 więc pierwszy bit za przecinkiem jest 1. Odejmujemy 1/2 (0.5) i zostaje 0.134
- 0.134 jest mniejsze niż 1/4 (0.25) - kolejne będzie 0
- 0.134 jest większe niż 1/8 (0.125) - kolejny bit to 1. Odejmujemu 0.125 zostaje 0.009.
- 0.009 jest mniejsze niż 1/16 (0.0625) - kolejny bit to 0
- 0.009 jest mniejsze niż 1/32 (0.03125) - kolejny bit to 0
Dostajemy .10100 - i to nie jest skończony wynik. Ułamki, które w systemie dziesiętnym mają skończoną reprezentację, w układzie dwójkowym mogą mieć nieskończoną, tak że wynik na skończonej liczbie bitów nie musi być dokładny.
By nie liczyć na ułamkach zawsze możesz obie strony pomnożyć przez jakąś potęge dwójki, np 256 (przesunięcie o 8 bitów). Wtedy 256 * 0.634 = 162 a to binarnie jest 10100010 - jak widać, po przesunięciu w prawo najstarsze bity się zgadzają.