[room] Щодо: Двоичные числа

Damir Shayhutdinov =?iso-8859-1?q?lost404_=CE=C1_gmail=2Ecom?=
Чт Фев 8 20:01:10 MSK 2007


> так знает кто-то правило? Ибо пользоваться qalculator я тоже умею, но
> беглый взгляд в его исходники убедил меня что алгоритм преобразования
> я из него не вытащу... :)
Вот например:

надо перевести число 0.625 в двоичное.

0. Остаток = дробной части
1. Если остаток равен 0, прекратить алгоритм
2. Остаток < 0.5 ?
3. Если да, то записать 0, и умножить остаток на  2.
4. Если больше или равен 0.5 - то записать 1, отнять 0.5 и умножить на 2.
5. Перейти к пункту 1.

Например:
0.625 (0, <тут будут цифры дроби>)
0.625 != 0
Оно больше чем 0.5 - по этому надо записать после запятой 1, отнять
0.5 и умножить на 2.
0.625 - 0.5 = 0.125 (0,1<>)
0.125 * 2 = 0.25 (0,1<>)
Теперь опять на пункт 1.
0.25 != 0
0.25 < 0.5 ? да. Поэтому записываем 0, умножаем на 2.
0.25 * 2 = 0.5 (0,10<>)
Переходим опять к пункту 1.
0.5 < 0.5 ? нет. Записываем 1, отнимаем 0.5, умножаем на 2
0.5 - 0.5 = 0 (0,101<>)
0 * 2 = 0 (0,101<>)
Переходим к пункту 1. В остатке получили 0. Алгоритм закончен.
Итого: 0.625 = 0.101

В принципе, для всех дробей, делитель которых не является степенью 2 -
результатом будет  периодическая дробь
.
Чтобы определить период, надо продолжать алгоритм до тех пор, пока
остаток не начнет повторяться. Тогда та часть, которая была получена
между двумя одинаковыми остатками, будет периодом.


Подробная информация о списке рассылки smoke-room