Преобразование десятичных чисел в двоичные

Главная Форумы Программирование Архитектура ЭВМ и систем Преобразование десятичных чисел в двоичные

В этой теме 0 ответов, 1 участник, последнее обновление  Васильев Владимир Сергеевич 1 месяц назад.

  • Автор
    Сообщения
  • #4189

    1 Пусть мы имеем целое десятичное число А. Преобразовать его в двоичное число — значит представить в виде
    $$A=a_{n}\cdot 2^{n}+a_{n-1}\cdot 2^{n-1}+…+a_{1}\cdot 2^{1}+a_{0}\cdot 2_{0}=\sum_{n}^{i=o}\cdot a_{i}\cdot ^2{^{i}}$$
    где $$a_{n-1},…a_1, a_0$$ – цифры двоичного числа, равные 0 или 1.
    Цифры двоичного числа можно определять последовательно, начиная с а0 и кончая а„, следующим образом:
    а) делим заданное нам число А на 2; в результате получаем целую часть частного
    $$A_1=a_{n}\cdot 2^{n-1}+a_{n-1}\cdot 2^{n-2}+…+a_{2}\cdot 2^{1}+a_{1}\cdot 2_{0}=\sum_{n}^{i=1}\cdot a_{i}\cdot ^2{^{i-1}}$$
    б) делим А_1 на 2; в результате получаем в частном
    $$A_2=a_{n}\cdot 2^{n-2}+a_{n-1}\cdot 2^{n-3}+…+a_{2}\cdot 2^{0}=\sum_{n}^{i=2}\cdot a_{i}\cdot ^2{^{i-2}} $$
    и в остатке а_1 и т.д.
    Процесс деления продолжается до тех пор, пока мы не получим в частном 0 и в остатке 1. Это означает, что мы определили старший разряд двоичного числа.

    Пример. Дано десятичное число А = 37. После деления на 2 получаем в частном А_1 = 18 и в остатке а_0 = 1.
    Разделив А_1 = 18 на 2, получаем в частном А_2 = 9 и в остатке a_1 = 0.
    Разделив А_2 = 9 на 2, получаем в частном А_3 = 4 и в остатке a_2 = 1.
    Разделив А_3 = 4 на 2, получаем в частном А_4 = 2 и в остатке a_3 = 0.
    Разделив А_4 = 2 на 2, получаем в частном А_5 = 1 ив остатке a_4 = 0.
    Разделив А_5 = 1 на 2, получаем в частном А_6 = 0 и в остатке a_5 = 1.
    На этом процесс преобразования заканчивается.
    В результате получаем $$37_{р=10} = 100101_{р=2}$$ (основание системы счисления, в которой выражено число, будем записывать в виде индекса).
    Приведенное преобразование удобно записывать в таком виде:

    Целая часть частного от отделения на 2 37 18 9 4 2 1 0
    Остаток a_0=1 a_1=0 a_2=1 a_3=0 a_4=0 a_5=1

    2
    Пусть мы имеем дробное десятичное число В < 1. Требуется определить двоичную дробь $$B=b_{-1}\cdot2 ^{-1}+b_{-2}\cdot2 ^{-2}+...=\sum_{i=1}^{e}\cdot_b{-1}\cdot 2^{-i} $$ Где $$b_{-1}, b_{-2}, ... $$ - двоичные цифры, равные 0 или 1. Цифры двоичного числа можно определять последова­тельно, начиная с $$b_{-1}$$ следующим образом: а) умножаем заданное число В на 2: $$2B=b{-1} + b_{-2}\cdot 2^{-1} + b_{-3}\cdot 2^{-2} + ...;$$ отделяем целую часть числа 2В, равную $$b_{-1}$$ и дробную часть $$B_1=b_{-2}\cdot 2^{1}+b_{-3}\cdot 2^{-2}+...=\sum_{i=2}^{\infty}b_{-i}\cdot 2^{-i+1} $$ б) умножаем B1 на 2: $$2B_{1}=b_{-2}+b_{-3}\cdot 2^{-1}+...$$ Целая часть равна $$b_{-2}$$, а дробная часть $$B_{2}=b_{-3}\cdot 2^{-1}+b_{-4}\cdot 2^{-2}+...=\sum_{i=3}^{\infty }b_{-i}\cdot 2^{-i+2}$$ используется для дальнейшего преобразования. Преобразование продолжается до тех пор, пока после очередного умножения на 2 дробная часть не окажется равной нулю (что означает точное преобразование в двоичную дробь) или пока мы не получим достаточное количество двоичных разрядов, удовлетворяющее нас с точки зрения точности преобразования. Пусть в некотором цикле преобразования, в котором мы определяем k-й разряд двоичной дроби, после умножения $$B_{k-1}$$ на 2 мы получим дробную часть, равную той, которая уже была в одном из предыдущих циклов преобразования, например при определении l-го разряда двоичной дроби. Это означает, что после k-го разряда двоичные цифры дроби будут повторяться так же, как и после l-го разряда, т. е. мы получили периодическую двоичную дробь и группа двоичных цифр после l-го разряда до k-го разряда включительно представляет собой период этой дроби. Поясним преобразование десятичной дроби в двоичную на примерах.
    Пример 1. Дана десятичная дробь; B = 0,31. В принятых нами выше обозначениях получаем:
    $$2B = 0,62, B1 = 0,62, b_{-1} = О,
    \\
    2B1 = 1,24, B2 = 0,24, b_{-2} = 1,
    \\
    2B2 = 0,48, B3 = 0,48, b_{-3} = 0,
    \\
    2B3 = 0,96, B4 = 0,96, b_{-4}= О,
    \\
    2B4 = 1,92, B5 = 0,92, b_{-5} = 1,
    \\
    2B5 = 1,84, B6 = 0,84, b_{-6} = 1,
    \\
    2B6 = 1,68, В7 = 0,68, b_{-7}, = 1
    \\
    и т.д.$$

    В результате
    $$(0,31)_{р=10} = (0,0100111)_{р=2}.$$

    Пример 2. дана простая дробь В = 5/14. Выполним такое же преобразование, как в примере l, изменим только запись:

    Мы получили дробную часть 5/7. которая уже встречалась ранее. Группа разрядов 101 в дальнейшем будет периодически повторяться. Получаем

    $$(\frac{5}{14})_{p=10}=(0,0101101101…)_{p=2}$$

    Для преобразования в двоичное число смешанного десятичного числа, содержащего как целую, так и дробную часть, следует преобразовать отдельно целую и дробную части десятичного числа.

    3 Описанный выше метод нетрудно распространить на случай преобразования десятичного числа в число с произвольным основанием р.

    При преобразовании целой части числа выполняется последовательное деление на основание р преобразуемого
    числа, а затем целой части частного и т. д. с выделением остатков, которые и есть цифры целой части преобразованного числа.

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

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

    В частности, при преобразовании десятичных чисел в двоичные практически удобно выполнять промежуточное их преобразование B 8-ричные или 16-ричные числа с дальнейшей записью каждой цифры 8-ричного.или 16-ричиого
    числа в виде трех- или четырехзначного двоичного числа. Естественно, что форму двоичной записи всех натуральных
    чисел от 0 до 7 в случае преобразования в 8-ричную систему или от 0 до 15 в случае преобразования в 16-ричную систему нужно знать на память.

    Примеp. Дано десятичное число 28,734 Преобразуем его предварительно в восьмеричное число. Преобразуем целую часть

    $$(28)_{p=10} = (34)_{p=8}$$

    Далее преобразуем дробную часть числа

    Следовательно:
    $$(0,73)_{p=10} \approx (0,5656050)_{p=8}
    \\
    (28,73)_{p=10} = (34,5656050)_{p=8}$$

    (материал взят из книги Папернов А.А. Логические основы цифровых машин и программирования Текст. М.: Наука, 1968. 591с.)

Для ответа в этой теме необходимо авторизоваться.