Показать сообщение отдельно
Старый 21.09.2010, 18:05   #10 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Допустим, что неизвестна точность вычисления при переводе числа 121,4(10). Тогда подобные примеры приведут к бесконечному циклу преобразований. Именно на невозможности точного перевода некоторых чисел и основано высказывание о погрешности вычисления на ЭВМ.

Перевод в двоичную систему счисления:
0,4(10)*2=0,8(10)
0,8(10)*2=1,6(10)
0,6(10)*2=1,2(10)
0,2(10)*2=0,4(10) и т.д.
происходит зацикливание, поэтому всегда нужно определять точность вычисления. В данном случае дробная часть будет 0110[0110] (2)
121.4(10)=1111001.0110[0110] (2)

Перевод в восьмеричную систему счисления:
0,4(10)*8=3,2(10)
0,2(10)*8=1,6(10)
0,6(10)*8=4,8(10)
0,8(10)*8=6,4(10)
0,4(10)*8=3,2(10) и т.д.
В данном случае дробная часть будет 3146[3146] (8)
121.4 (10)=171.3146[3146] (8)

Перевод в шестнадцатиричную систему счисления:
0,4(10)*16=6,4(10)
0,4(10)*16=6,4(10) и т.д.
В данном случае дробная часть будет 6[6] (16)
121.4 (10)=79.6[6] (16)

Проверка осуществляется через развёрнутую запись числа.
__________________
Убить всех человеков!
AlexZir вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070