Перевод из одной системы счисления в другую

Рейтинг: 2Ответов: 1Опубликовано: 06.04.2011

Первая ситуация.

Нужно перевести десятичную дробь например(0,65), в двоичную систему счисления! На примере дроби 0,75 все выходит просто: 0,75 *2 = 1,50 * 2 = 3,00 в итоге получаем 0,11 - получили единицу, и на этом останавливаемся! А в примере 0,65 уже сложнее... тут мы получаем бесконечный цикл, который может продолжаться бесконечно!

Т.е получается 0,65*2 = 1,30 * 2 = 0,60 * 2 = 1,22 * 2 = 0,44 * 2 = 0,88 и тут начинается цикл! Т.е 1,76 -> 1,52 -> 1,04 -> 0,08 -> 0,16 -> 0,32 -> 0,64 -> 1,28 -> 0,46 -> 0,72 -> 1,44 и опять получается 0,88.

Как понять что мы получили необходимую точность вычислений?

И вторая ситуация.

101101 = 1х2^0 + 0х2^1 + 1х2^2 + 1х2^3 + 0х2^4 + 1х2^5 = 0 + 2 + 4 + 8 + 32 = 46
// хотя должно получится 45

проверяем
46/2 = 23 -> 46 - 46 = 0
23/2 = 11 -> 23 - 22 = 1
11/2 = 5 -> 11 - 10 = 1
5/2 = 2 -> 5 - 4 = 1
2/2 = 1 -> 2 - 2 = 0
1
и получается 101110 совсем другое число!

Что я не так выполнил?

Ответы

▲ 2

В первом случае Вы сами должны знать, какая необходима точность вычислений.

Во втором случае предлагаю Вам переводить, используя разряды. Разряды, как известно, считаются с нуля. Тогда смотрим - в числе 101101 6 разрядов. Получаем

1 * 2^5 + 0 * 2^4 + 1 * 2^3 + 1 * 2^2 + 0 * 2^1 + 1 * 2^0 = 45.