Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > перевод дробных чисел в разные системы числения


Автор: VingradFan 11.10.2006, 17:46
mes, спасибо огромное за коммент....

позволю себе еще один вопрос про С.С.
как перевести в 2-ичную СС 0.064 
теоретечиски надо уножать на 2 пока дроб часть не будет ноль
но нулем она не становица и период не выделяеца!!!
может у вас получица?


Автор: maxim1000 11.10.2006, 18:11
число это представляется бесконечной дробью
здесь был описан общий алгоритм
http://forum.vingrad.ru/index.php?showtopic=64505&view=findpost&p=517628
а периоды выделяются так же, как и в случае десятичной системы
(когда-то алгоритм знал, но забыл, т.к. не пользовался)

Добавлено @ 18:24 
думаю, можно сделать так:
в каждый момент времени для получения очередной цифры нам нужно:
1. проверить, больше ли оно, чем 0.5 - так мы получим эту очередную цифру
2. если больше - отнять 0.5
3. умножить на 2
4. перейти на шаг 1
число, которым мы оперируем на каждом шаге, полностью определяет весь дальнейший процесс
это значит, что если оно повторится, то процесс станет периодическим

определение периода последовательности этих чисел:
основная проблема в том, что периодическая последовательность может иметь непериодический кусок в начале, а уже потом начать повторяться
для обнаружения этого есть метод <не помню кого>:
сравниваем x[n] и x[2*n], перебирая n от 1 до "пока не найдём"
т.к. n неограничено растёт, то скоро оно станет больше, чем длина начального непериодического кусочка, после этого, как только оно станет кратным периоду x[n] и x[n+n] будут равны, т.к. x[n+n]=x[n+m*T]=x[n]
тогда достаточно поискать периоди среди множителей n
(ну или если не жалко процессорного времени, просто пройтись в поисках периода от 1 до n)

Автор: VingradFan 19.10.2006, 20:41
не пожалел времени:
0.064=(00001101010011100001011010001001101101110011111011111100101011000111101001011101100100100011000001000) тоесть период выделился smile 

но задание было таким: записать внутреннее представление числа 0,064

и каким же макаром оно поместица в 32-разрядную сетку????(мантиса явно не влезает smile )
решите плиз...оч надо!!!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)