Liczba z przecinkiem będzie wyglądać tak: ... + n3 * 2^3 + n2 * 2^2 + n1 * 2^1 + n0 * 2^0 + n(-1) * 2^(-1) + n(-2) * 2^(-2) + n(-3) * 2^(-3)... Mam nadzieję, że się połapałeś w tym zapisie. Skrótowo mówiąc po przecinku mnożysz cyfrę przez 2 do potęgi ujemnej o wartości takiej, jakie jest miejsce po przecinku.
Przykładowo liczba 0.75 będzie zapisana, jako 0.11, bo masz 1 * 2^(-1) + 1 * 2^(-2).
Algorytm przeliczania jest taki:
1. Mnożysz liczbę w systemie dziesiątkowym razy 2.
2. Zapisujesz na koniec liczby binarnej cyfrę jedności,
którą dostałeś po pomnożeniu.
3. Odejmujesz od liczby w systemie dziesiątkowym
jej liczbę jedności.
(Zostawiasz tylko to, co po przecinku.)
4. Jeśli liczba w systemie dziesiątkowym jest różna od 0,
to wracasz do kroku 1.
5. Cieszysz się liczbą w zapisie binarnym.
Oczywiście liczb okresowych w systemie binarnym jest więcej, niż w dziesiątkowym. Przykładowo 0.2(10) = 0.(0011)(2). Natomiast twoja liczba 2391.23(10) = 100101010111.001(10111000010100011110)(2). No i występują również liczby niewymierne.
Oczywiście takiego zapisu nie stosuje się w komputerze, bo nie wiadomo by było, jak zapisać nieskończone rozwinięcie, na skończonej liczbie bitów. Obecnie najpopularniejszym sposobem zapisu binarnie liczb rzeczywistych jest standard IEEE754. Oczywiście nie daje on nieskończonej dokładności, ale tylko pewne przybliżenie liczby. Dodatkowo czym liczba jest dalej od 0, tym mniej jest dokładna ale jak na razie nikt nie wymyślił niczego lepszego.