Как перевести дробь в двоичную систему
Перевод из десятичной системы счисления в двоичную
Перед тем как перейти к алгоритму перевода, вспомним алфавит двоичной и десятичной системы счисления:
| Основание | Название | Алфавит |
|---|---|---|
| 2 | Двоичная | 0, 1 |
| 10 | Десятичная | 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 |
Для перевода чисел из десятичной системы в двоичную, воспользуемся соответствующим алгоритмом. Важно заметить, что алгоритм перевода целых и дробных чисел будет отличаться.
Алгоритм перевода целых десятичных чисел в двоичную систему счисления
Пример 1 : перевести десятичное число 123 в двоичную систему счисления
Для наглядности произведем деление «столбиком». Решение будет выглядеть следующим образом:
Исходя из вышеприведенного алгоритма, полученные остатки необходимо записать в обратном порядке.
Алгоритм перевода десятичной дроби в двоичную систему
Пример 2: перевести число 0,123 в двоичную систему.
Решение будет выглядеть следующим образом:
0.123 ∙ 2 = 0.246 (0)
0.246 ∙ 2 = 0.492 (0)
0.492 ∙ 2 = 0.984 (0)
0.984 ∙ 2 = 1.968 (1)
0.968 ∙ 2 = 1.936 (1)
0.936 ∙ 2 = 1.872 (1)
0.872 ∙ 2 = 1.744 (1)
0.744 ∙ 2 = 1.488 (1)
0.488 ∙ 2 = 0.976 (0)
0.976 ∙ 2 = 1.952 (1)
0.952 ∙ 2 = 1.904 (1)
В данном примере можно продолжить вычисления, но зачастую, такой точности будет достаточно.
Перевод дробного десятичного числа в двоичную систему
Для того чтобы перевести десятичное число, содержащее дробную часть, необходимо отдельно перевести целую часть и отдельно дробную.
Пример 3: перевести число 110,625 из десятичной системы в двоичную
Для решения примера потребуется отдельно перевести 110 и отдельно 0,625 из десятичной системы в двоичную, используя вышеизложенные алгоритмы. Таким образом переведя 110, получим:
Перевод десятичной дроби 0,625 выглядит так:
0.625 ∙ 2 = 1.25 (1)
0.25 ∙ 2 = 0.5 (0)
0.5 ∙ 2 = 1 (1)
Теперь осталось соединить результаты перевода. Таким образом: 110.62510=1101110.1012
Обратите внимание, что данный пример наглядно демонстрирует ситуацию, при которой дробная часть стала равной 0 и дальнейшее вычисление закончилось.
Десятичные дроби и смешанные числа в разных системах счисления.
Перевод целых чисел из одной системы счисления в другую обычно не вызывает проблем. А вот необходимость перевести десятичную дробь или смешанное число (число с целой и дробной частью) из системы в систему часто ставит в тупик даже сильных учеников.
1. Перевод смешанного числа в десятичную систему счисления из любой другой.
Пример 1.
Переведите число 105,4 из восьмеричной системы в десятичную.
Посчитаем сумму произведений цифр числа на 8 (основание системы) в степени разряда числа:
2. Перевод десятичных дробей из десятичной системы счисления в любую другую.
Для перевода десятичной дроби из десятичной системы в любую другую следует умножать дробь, а затем дробные части произведений, на основание новой системы пока дробная часть не станет равной 0 или до достижения указанной точности. Затем целые части выписать, начиная с первой.
Пример 2
Переведите десятичное число 0,816 в двоичную систему с точностью до сотых.
Умножаем дробь 0,816, а затем дробную часть произведения (0,632) на 2 и выписываем целые части, начиная с первой:
Пример 3.
Переведите десятичное число 0,8125 в восьмеричную систему.
Умножаем дробь 0,8125, а затем дробную часть произведения (0,5) на 8 и выписываем целые части, начиная с первой:
3. Перевод смешанных чисел из десятичной системы счисления в любую другую
Если необходимо перевести смешанное число из десятичной системы в любую другую, следует перевести целую и дробную части, а затем записать, разделив десятичной запятой.
Пример 4.
Сколько единиц в двоичной записи десятичного числа 14,125?
Переведем целую часть числа в двоичную систему:
Переведем дробную часть числа в двоичную систему:
Перевод дробных чисел из одной системы счисления в другую
Перевод дробных чисел из одной системы счисления в другую
После того, как я сделал несколько калькуляторов для перевода между разными системами счисления — вот список от первой до последней версии, от самого простого к сложному: Перевод числа в другие системы счисления, Перевод из десятичной системы счисления, Перевод из одной системы счисления в другую — в комментариях стали периодически спрашивать — а что же, мол, дробные числа, как же их переводить? И когда спросили больше трех раз, я таки решил изучить этот вопрос.
Результатом стал калькулятор, который вы видите ниже, он умеет переводить и дробные числа в том числе. Как водится, для любознательных под калькулятором немного теории.
Перевод дробных чисел из одной системы счисления в другую
Теперь теория. Я, честно говоря, думал, что вопрос довольно сложный, но при ближайшем рассмотрении все оказалось проще простого. Надо было только держать в голове тот факт, что речь идет о позиционных системах счисления.
В чем тут суть? Рассмотрим на примере десятичного числа 6.125. Это дробное число в десятичной системе счисления представляется так:
Все просто, не так ли? Та же самая простота сохраняется и при записи дробного числа в любой другой системе счисления. Возьмем, например, горячо любимую каждым программистом двоичную систему и число, например, 110.001. Эта запись есть не что иное как
Да-да, число для примера было выбрано не просто так. То есть, 110.001 в двоичной системе есть 6.125 в десятичной. Принцип, я думаю, ясен.
Есть только одно но — все-таки из-за того, что здесь участвую дроби с разными знаменателями, не всегда одно и тоже число можно одинаково точно выразить в разных системах счисления. Что я имею в виду?
Продолжать можно еще довольно долго, но уже сейчас видно, что 0.8 в десятичной системе это 0.11001100. (дальше очень много цифр) в двоичной. Если честно, то это периодическое число с перидом 1100, так что мы никогда не сможем выразить его точно в двоичной системе счисления. 110011001100. будет продолжаться до бесконечности.
Поэтому перевод дробного числа из одной системы счисления в другую чаще всего дает погрешность. Погрешность эта зависит от того, сколько разрядов мы используем для записи дробной части переведенного числа. Возьмем пример с числом 0.8 и используем для записи его двоичного представления шесть разрядов после запятой — 0.110011. Полученное число вовсе не 0.8, а 0.796875, разница при этом составляет 0.003125. Это и есть наша погрешность перевода десятичного числа 0.8 в двоичный вид при использовании шести разрядов после запятой.
Перевод дробных чисел из десятичной системы счисления в двоичную
Перевод чисел из различных систем счисления в двоичную сводится к их представлению в виде различных комбинаций двух цифровых символов этой системы – 0 и 1. Для перевода из десятичной системы в двоичную чаще всего используется метод последовательного деления на 2, где 2 – это разряд двоичного кода аналогично 10 в десятичном счислении.
Однако этот метод подходит при переводе целых чисел, для дробей же используют, напротив, умножение. А именно умножают дробную часть на 2 последовательно до тех пор, пока не появится целая часть. При этом удачное умножение, дающее в результате число, большее 1, приносит итоговому двоичному числу цифру 1. А неудачное, после которого число все еще меньше 1, дает цифру 0. При этом цифры дроби в двоичном виде записываются после запятой также, как в исходной десятичной.
3Рассмотрим этот немудреный способ на конкретном примере. Для начала возьмите простую десятичную дробь 0,2. Умножайте последовательно на 2:0,2*2 = 0,4 => 0,0_2;0,4*2 = 0,8 => 0,00_2;0,8*2 = 1,6 => 0,001_2;
Отбросьте целую часть и продолжайте те же действия:0,6*2 = 1,2 => 0,0011_2;Снова отбросьте целую часть и вы вернетесь к числу 0,2. Двоичная дробь оказалась цикличной, т.е. повторяющейся, сокращенно запишите:0,2_10 = 0,(0011)_2, где скобки указываются на повторяемость одной и той же группы цифр.
Таким образом,для перевода в двоичную систему дроби с целой частью сначала переводится именно она, а потом уже число после запятой. Например, переведите число 9,25.Для перевода целой части воспользуйтесь методом последовательного деления: 9/2 = 4 и 1 в остатке;4/2 = 2 и 0 в остатке;2/2 = 1 и 0 в остатке;½ = 0 и 1 в остатке. Запишите полученные остатки справа налево: 9_10 = 1001_2.
6Теперь переведите дробную часть:0,25*2 = 0,5 => 0;0,5*2 = 1 => 1.На этот раз вам повезло, дробь оказалась не цикличной. Запишите итог:9,25_10 = 1001,01_2.
Перевод десятичных дробей в двоичную систему счисления заключается в поиске целых частей при умножении на 2. Например, переведём десятичную дробь 0,625 в двоичную систему счисления. Чтобы найти первую после запятой цифру двоичной дроби, нужно умножить заданное число на 2 и выделить целую часть произведения.
0,625 · 2 = 1,250 (целая часть равна 1);
0,250 · 2 = 0,500 (целая часть равна 0);
0,500 · 2 = 1,000 (целая часть равна 1).
Дробная часть последнего произведения равна 0. Перевод закончен. Записываем в одну строку полученное значение целой части, начиная с первой цифры: 0,62510 = 0,1012. Каждый раз в умножении участвует только дробная часть десятичного числа.
Правило перевода: Чтобы перевести положительную десятичную дробь в двоичную, нужно дробь умножить на 2. Целую часть произведения взять в качестве первой цифры после запятой в двоичной дроби, а дробную часть вновь умножить на 2. В качестве следующей цифры взять целую часть этого произведения, а дробную часть произведения снова умножить на 2 и т.д.
При переводе десятичной дроби в двоичную может получиться периодическая дробь.
Пример. Переведем десятичную дробь 0,3 в двоичную систему счисления.
0,3 · 2 = 0,6 (целая часть равна 0);
0,6 · 2 = 1,2 (целая часть равна 1);
0,2 · 2 = 0,4 (целая часть равна 0);
0,4 · 2 = 0,8 (целая часть равна 0);
0,8 · 2 = 1,6 (целая часть равна 1);
0,6 · 2 = 1,2 (целая часть равна 1);
Дробная часть 0,6 уже была на втором шаге вычислений, поэтому вычисления начнут повторяться. Следовательно, в двоичной системе счисления число 0,3 представляется периодической дробью.
Как перевести дробь в двоичную систему
Правила перевода правильных дробей
Напомним, что правильная дробь имеет нулевую целую часть, т.е. у нее числитель меньше знаменателя.
Результат перевода правильной дроби всегда правильная дробь.
Перевод из десятичной системы счисления в двоичную и шестнадцатеричную :
а) исходная дробь умножается на основание системы счисления, в которую переводится (2 или 16);
б) в полученном произведении целая часть преобразуется в соответствии с таблицей в цифру нужной системы счисления и отбрасывается – она является старшей цифрой получаемой дроби;
в) оставшаяся дробная часть (это правильная дробь) вновь умножается на нужное основание системы счисления с последующей обработкой полученного произведения в соответствии с шагами а) и б);
г) процедура умножения продолжается до тех пор, пока ни будет получен нулевой результат в дробной части произведения или ни будет достигнуто требуемое количество цифр в результате;
д) формируется искомое число: последовательно отброшенные в шаге б) цифры составляют дробную часть результата, причем в порядке уменьшения старшинства.
В данном примере процедура перевода прервана на четвертом шаге, поскольку получено требуемое число разрядов результата. Очевидно, это привело к потере ряда цифр.
Пример 2. Выполнить перевод числа 0,847 в шестнадцатеричную систему счисления. Перевод выполнить до трех значащих цифр.
В данном примере также процедура перевода прервана.
Перевод из двоичной и шестнадцатеричной систем счисления в десятичную.
Расхождение полученного результата с исходным числом (см. пример 1 ) вызвано тем, что процедура перевода в двоичную дробь была прервана.
Таким образом, 0,1101 2 = 0,8125.
Расхождение полученного результата с исходным числом (см. пример 2 ) вызвано тем, что процедура перевода в шестнадцатеричную дробь была прервана.
Таким образом, 0,D8D 16 = 0,84692.
Перевод из двоичной системы счисления в шестнадцатеричную:
а) исходная дробь делится на тетрады, начиная с позиции десятичной точки вправо. Если количество цифр дробной части исходного двоичного числа не кратно 4, оно дополняется справа незначащими нулями до достижения кратности 4;
Поскольку количество цифр дробной части не кратно 4, добавим справа незначащий ноль:
Перевод из шестнадцатеричной системы счисления в двоичную:
а) каждая цифра исходной дроби заменяется тетрадой двоичных цифр в соответствии с таблицей ;
б) незначащие нули отбрасываются.
Отбросим в результате незначащий ноль и получим окончательный ответ: 0,2А 16 = 0,0010101 2










