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

Оглавление

Перевод дробного восьмеричного числа в двоичную систему счисления

Пример 2: перевести 127.25 из восьмеричной в двоичную систему счисления.

Общий смысл алгоритма перевода дробного числа, аналогичен алгоритму перевода целого, т.е. вначале переводим в десятичную, а затем в двоичную:

1. Для перевода числа 127.25 в десятичную систему воспользуемся формулой:

An = an-1 ∙ qn-1 + an-2 ∙ qn-2 + ∙∙∙ + a ∙ q + a-1 ∙ q-1 + ∙∙∙ + a-m ∙ q-m, отсюда:

127.258=1 ∙ 82 + 2 ∙ 81 + 7 ∙ 8 + 2 ∙ 8-1 + 5 ∙ 8-2 = 1 ∙ 64 + 2 ∙ 8 + 7 ∙ 1 + 2 ∙ 0.125 + 5 ∙ 0.015625 = 64 + 16 + 7 + 0.25 + 0.078125 = 87.32812510

Таким образом:

127.258 = 87.32812510

2. Полученное число 87.328125 переведем из десятичной системы счисления в двоичную. Для этого потребуется перевести вначале целую часть, а затем дробную. Таким образом необходимо:

  1. Перевести 87 в двоичную систему;
  2. Перевести 0.328125 в двоичную систему;

2.1 Для того, чтобы перевести число 87 из десятичной системы счисления в двоичную, необходимо осуществить последовательное деление на 2, до тех пор пока остаток не будет меньше 2-х.

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

8710=10101112

2.2 Для перевода десятичной дроби 0.328125 в двоичную систему, необходимо выполнить последовательное умножение дроби на 2, до тех пор, пока дробная часть не станет равной 0 или пока не будет достигнута заданная точность вычисления. Получаем:

0.328125 ∙ 2 = 0.65625 (0) 0.65625 ∙ 2 = 1.3125 (1) 0.3125 ∙ 2 = 0.625 (0) 0.625 ∙ 2 = 1.25 (1) 0.25 ∙ 2 = 0.5 (0) 0.5 ∙ 2 = 1 (1)

Ответом станет прямая последовательность целых частей произведения. Т.е.

0.32812510=0.0101012

2.3. Осталось соединить переведенные части, таким образом:

87.32812510=1010111.0101012

Ответ: 127.258 = 1010111.0101012.

Таблица перевода десятичных чисел от 0 до 20 в двоичную систему счисления.

десятичное

число

двоичное число

десятичное

число

двоичное число

0000

11

1011

1

0001

12

1100

2

0010

13

1101

3

0011

14

1110

4

0100

15

1111

5

0101

16

10000

6

0110

17

10001

7

0111

18

10010

8

1000

19

10011

9

1001

20

10100

10

1010

и т.д.

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

Как сделать перевод из одной системы счисления в другую? В информатике существует несколько простых способов перевода десятичных чисел в двоичные числа. Рассмотрим два из них.

Еще один пример

Давайте, преобразуем 117 в двоичный код, используя метод 1:

Построение числа из остатков снизу вверх, 117 = 111 0101 в двоичном формате.

И используя метод 2:

Наибольшее значение двойки, возведенной в степень, которое меньше 117, равно 64.

  • 117 >= 64? Да, поэтому бит со значением 64 должен быть равен 1. 117 — 64 = 53.
  • 53 >= 32? Да, поэтому бит со значением 32 должен быть равен 1. 53 — 32 = 21.
  • 21 >= 16? Да, поэтому бит со значением 16 должен быть равен 1. 21 — 16 = 5.
  • 5 >= 8? Нет, поэтому бит со значением 8 должен быть равен 0.
  • 5 >= 4? Да, поэтому бит со значением 4 должен быть равен 1. 5 — 4 = 1.
  • 1 >= 2? Нет, поэтому бит со значением 2 должен быть равен 0.
  • 1 >= 1? Да, поэтому бит со значением 1 должен быть равен 1.

117 в десятичном формате = 111 0101 в двоичном формате.

Метод 1 для преобразования числа из десятичной системы счисления в двоичную

Преобразование десятичного числа в двоичную форму немного сложнее, но всё же довольно простое. Для этого есть два хороших метода.

Первый метод заключается в постоянном делении на 2 и записи остатков. Двоичное число строится в конце из остатков снизу вверх.

Преобразование 148 из десятичной формы в двоичную (для обозначения остатка используется r, от «remainder»):

Записываем все остатки снизу вверх: 1001 0100

148 в десятичном формате = 1001 0100 в двоичном формате.

Вы можете проверить это, преобразовав двоичное число обратно в десятичное:

(1 * 128) + (0 * 64) + (0 * 32) + (1 * 16) + (0 * 8) + (1 * 4) + (0 * 2) + (0 * 1) = 148

Перевод дробного шестнадцатеричного числа в двоичную систему счисления

Пример 2: перевести 1F.625 из шестнадцатеричной в двоичную систему счисления.

Общий смысл алгоритма перевода дробного числа, аналогичен алгоритму перевода целого, т.е. вначале переводим в десятичную, а затем в двоичную:

1. Для перевода числа 1F.625 в десятичную систему воспользуемся формулой:

A16 = an-1 ∙ 16n-1 + an-2 ∙ 16n-2 + ∙∙∙ + a ∙ 16 + a-1 ∙ 16-1 + ∙∙∙ + a-m ∙ 16-m, отсюда:

1F.62516=1 ∙ 161 + F ∙ 16 + 6 ∙ 16-1 + 2 ∙ 16-2 + 5 ∙ 16-3 = 1 ∙ 16 + 15 ∙ 1 + 6 ∙ 0.0625 + 2 ∙ 0.00390625 + 5 ∙ 0.000244140625 = 16 + 15 + 0.375 + 0.0078125 + 0.001220703125 = 31.38403320312510

Таким образом:

1F.62516 = 31.38403320312510

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

  1. Перевести 31 в двоичную систему;
  2. Перевести 0.384033203125 в двоичную систему;

2.1 Для того, чтобы перевести число 31 из десятичной системы счисления в двоичную, необходимо осуществить последовательное деление на 2, до тех пор пока остаток не будет меньше чем 2.

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

6610=1028

2.2 Для перевода десятичной дроби 0.384033203125 в двоичную систему, необходимо выполнить последовательное умножение дроби на 2, до тех пор, пока дробная часть не станет равной 0 или пока не будет достигнута заданная точность вычисления. Получаем:

0.384033203125 ∙ 2 = 0.76806640625 (0) 0.76806640625 ∙ 2 = 1.5361328125 (1) 0.5361328125 ∙ 2 = 1.072265625 (1) 0.072265625 ∙ 2 = 0.14453125 (0) 0.14453125 ∙ 2 = 0.2890625 (0) 0.2890625 ∙ 2 = 0.578125 (0) 0.578125 ∙ 2 = 1.15625 (1) 0.15625 ∙ 2 = 0.3125 (0) 0.3125 ∙ 2 = 0.625 (0) 0.625 ∙ 2 = 1.25 (1) 0.25 ∙ 2 = 0.5 (0)

Ответом станет прямая последовательность целых частей произведения. Т.е.

0.38403320312510=0.011000100102

2.3. Осталось соединить переведенные части, таким образом:

31.38403320312510=11111.011000100102

Ответ: 1F.62516 = 11111.011000100102.

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

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

Целую часть числа переводится из десятичной СС в другую систему счисления — последовательным делением целой части числа на основание системы счисления (для двоичной СС — на 2, для 8-ичной СС — на 8, для 16-ичной — на 16 и т.д.) до получения целого остатка, меньше, чем основание СС.

Пример 4. Переведем число 159 из десятичной СС в двоичную СС:

159 2            
158 79 2          
1 78 39 2        
  1 38 19 2      
    1 18 9 2    
      1 8 4 2  
        1 4 2 2
          2 1

Рис. 1

Как видно из Рис. 1, число 159 при делении на 2 дает частное 79 и остаток 1. Далее число 79 при делении на 2 дает частное 39 и остаток 1 и т.д. В результате построив число из остатков деления (справа налево) получим число в двоичной СС: 10011111. Следовательно можно записать:

Пример 5. Переведем число 615 из десятичной СС в восьмеричную СС.

615 8    
608 76 8  
7 72 9 8
  4 8 1
    1  

Рис. 2

При приведении числа из десятичной СС в восьмеричную СС, нужно последовательно делить число на 8, пока не получится целый остаток меньшее, чем 8. В результате построив число из остатков деления (справа налево) получим число в восьмеричной СС: 1147(см. Рис. 2). Следовательно можно записать:

Пример 6. Переведем число 19673 из десятичной системы счисления в шестнадцатеричную СС.

19673 16    
19664 1229 16  
9 1216 76 16
  13 64 4
    12  

Рис. 3

Как видно из рисунка Рис.3, последовательным делением числа 19673 на 16 получили остатки 4, 12, 13, 9. В шестнадцатеричной системе счисления числе 12 соответствует С, числе 13 — D. Следовательно наше шестнадцатеричное число — это 4CD9.

Далее рассмотрим перевод правильных десятичных дробей в двоичную СС, в восьмеричную СС, в шестнадцатеричную СС и т.д.

Для перевода правильных десятичных дробей (вещественное число с нулевой целой частью) в систему счисления с основанием s необходимо данное число последовательно умножить на s до тех пор, пока в дробной части не получится чистый нуль, или же не получим требуемое количество разрядов. Если при умножении получится число с целой частью, отличное от нуля, то эту целую часть не учитывать (они последовательно зачисливаются в результат).

Рассмотрим вышеизложенное на примерах.

Пример 7. Переведем число 0.214 из десятичной системы счисления в двоичную СС.

    0.214
  x 2
  0.428
  x 2
  0.856
  x 2
1   0.712
  x 2
1   0.424
  x 2
  0.848
  x 2
1   0.696
  x 2
1   0.392

Рис. 4

Как видно из Рис.4, число 0.214 последовательно умножается на 2. Если в результате умножения получится число с целой частью, отличное от нуля, то целая часть записывается отдельно (слева от числа), а число записывается с нулевой целой частью. Если же при умножении получиться число с нулевой целой частью, то слева от нее записывается нуль. Процесс умножения продолжается до тех пор, пока в дробной части не получится чистый нуль или же не получим требуемое количество разрядов. Записывая жирные числа (Рис.4) сверху вниз получим требуемое число в двоичной системе счисления: 0.0011011.

Следовательно можно записать:

Пример 8. Переведем число 0.125 из десятичной системы счисления в двоичную СС.

    0.125
  x 2
  0.25
  x 2
  0.5
  x 2
1   0.0

Рис. 5

Для приведения числа 0.125 из десятичной СС в двоичную, данное число последовательно умножается на 2. В третьем этапе получилось 0. Следовательно, получился следующий результат:

Пример 9. Переведем число 0.214 из десятичной системы счисления в шестнадцатеричную СС.

    0.214
  x 16
3   0.424
  x 16
6   0.784
  x 16
12   0.544
  x 16
8   0.704
  x 16
11   0.264
  x 16
4   0.224

Рис. 6

Следуя примерам 4 и 5 получаем числа 3, 6, 12, 8, 11, 4. Но в шестнадцатеричной СС числам 12 и 11 соответствуют числа C и B. Следовательно имеем:

Пример 10. Переведем число 0.512 из десятичной системы счисления в восьмеричную СС.

    0.512
  x 8
4   0.096
  x 8
  0.768
  x 8
6   0.144
  x 8
1   0.152
  x 8
1   0.216
  x 8
1   0.728

Рис. 7

Получили:

Пример 11. Переведем число 159.125 из десятичной системы счисления в двоичную СС. Для этого переведем отдельно целую часть числа (Пример 4) и дробную часть числа (Пример 8). Далее объединяя эти результаты получим:

Пример 12. Переведем число 19673.214 из десятичной системы счисления в шестнадцатеричную СС. Для этого переведем отдельно целую часть числа (Пример 6) и дробную часть числа (Пример 9). Далее объединяя эти результаты получим:

Небольшой тест

Вопрос 1

Преобразуйте 0100 1101 в десятичную форму.

Ответ

Двоичное число 1 1 1 1
* Значение цифры 128 64 32 16 8 4 2 1
= Результат (77) 64 8 4 1

Ответ 77.

Вопрос 2

Преобразуйте 93 в 8-битное двоичное число без знака. Используйте оба метода, описанные выше.

Ответ

Используя метод 1:

Работая с остатками в обратном направлении, получаем 101 1101

Используя метод 2:

  • Наибольшее значение двойки, возведенной в степень, которое меньше 93, равно 64.
  • 93 >= 64? Да, поэтому бит со значением 64 равен 1. 93 — 64 = 29.
  • 29 >= 32? Нет, поэтому бит со значением 32 равен 0.
  • 29 >= 16? Да, поэтому бит со значением 16 равен 1. 29 — 16 = 13.
  • 13 >= 8? Да, поэтому бит со значением 8 равен 1. 13 — 8 = 5.
  • 5 >= 4? Да, поэтому бит со значением 4 равен 1. 5 — 4 = 1.
  • 1 >= 2? Нет, поэтому бит со значением 2 равен 0.
  • 1 >= 1? Да, поэтому бит со значением 1 равен 1.

Ответ: 0101 1101.

Вопрос 3

Преобразуйте -93 в 8-битное двоичное число со знаком (с использованием дополнительного кода).

Ответ

  • Из предыдущего ответа мы уже знаем, что 93 – это 0101 1101
  • Для дополнительного кода инвертируем биты: 1010 0010
  • И прибавляем 1: 1010 0011

Вопрос 4

Преобразуйте 1010 0010 в десятичное число без знака.

Ответ

Работаем справа налево:

1010 0010 = (0 * 1) + (1 * 2) + (0 * 4) + (0 * 8) + (0 * 16) + (1 * 32) + (0 * 64) + (1 * 128) = 2 + 32 + 128 = 162

Ответ: 162.

Вопрос 5

Преобразуйте 1010 0010 в десятичное число со знаком (исходное число представлено в дополнительном коде).

Ответ

Поскольку нам сказано, что это число представлено в дополнительном коде, мы можем «отменить» дополнительный код, инвертировав биты и добавив 1.

  • Сначала начнем с нашего двоичного числа: 1010 0010
  • Инвертируем биты: 0101 1101
  • Добавляем 1: 0101 1110
  • Преобразуем в десятичную форму: 64 + 16 + 8 + 4 + 2 = 94
  • Помним, что это дополнительный код, а исходный левый бит был отрицательным: -94

Ответ: -94

Вопрос 6

Напишите программу, которая просит пользователя ввести число от 0 до 255. Напечатайте это число как 8-битное двоичное число (в форме #### ####). Не используйте побитовые операторы. Не используйте .

Подсказка 1

Используйте метод 2. Предположим, что наибольшее значение двойки, возведенной в степень, равно 128.

Подсказка 2

Напишите функцию, чтобы проверить, больше ли введенное вами число, чем значение двойки, возведенной в некоторую степень. Если да, выведите ‘1’ и верните свое число за вычетом значения двойки, возведенной в степень.

Ответ

Что такое двоичные файлы?

С другой стороны, двоичная система — это система с основанием 2. В то время как десятичная система имеет значения от 0 до 9, система с основанием 2 (или двоичная) имеет только значения 0 или 1.

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

1, 2, 4, 8, 16, 32, 64 и так далее.

Давайте посмотрим на двоичное число 11.

1 в столбце 1 и 1 в столбце 2. Итак, 1 + 2 = 3.

Число 11 = 3.

Давайте попробуем другой номер: 1101.

1 в столбце 1, 0 в столбце 2, 1 в столбце 4 и 1 в столбце 8.

Итак, имеем 1 + 4 + 8 = 13.

Число 1101 = 13.

Преобразование целых чисел в двоичное представление в дополнительном коде

Например, как мы представляем -5 в двоичном дополнительном коде:

  • сначала мы выясняем двоичное представление для 5: 0000 0101
  • затем мы инвертируем все биты: 1111 1010
  • затем прибавляем 1: 1111 1011

Преобразование числа -76 в двоичный формат:

  • положительное число 76 в двоичном формате: 0100 1100
  • инвертировать все биты: 1011 0011
  • добавить 1: 1011 0100

Почему мы добавляем 1? Рассмотрим число 0. Если бы отрицательное значение было представлено просто как инвертированное положительное число, 0 имел бы два представления: 0000 0000 (положительный ноль) и 1111 1111 (отрицательный ноль). При добавлении единицы 1111 1111 намеренно переполняется и становится 0000 0000. Это предотвращает наличие двух представлений нуля и упрощает некоторую внутреннюю логику, необходимую для выполнения арифметических действий с отрицательными числами.

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

В следующих примерах предполагается, что мы имеем дело с целыми числами без знака.

Рассмотрим 8-битное (1 байт) двоичное число 0101 1110. Двоичное 0101 1110 означает (0 * 128) + (1 * 64) + (0 * 32) + (1 * 16) + (1 * 8) + (1 * 4) + (1 * 2) + (0 * 1). Если просуммировать все эти части, мы получим десятичное число 64 + 16 + 8 + 4 + 2 = 94.

Ниже показан тот же процесс в формате таблицы. Мы умножаем каждую двоичную цифру на ее числовое значение (определяемое ее позицией). Суммирование всех этих значений дает нам итоговый результат.

Преобразование 0101 1110 в десятичную форму:

Двоичное число 1 1 1 1 1
* Значение цифры 128 64 32 16 8 4 2 1
= Результат (94) 64 16 8 4 2

Преобразуем 1001 0111 в десятичную форму:

Двоичное число 1 1 1 1 1
* Значение цифры 128 64 32 16 8 4 2 1
= Результат (151) 128 16 4 2 1

1001 0111 в двоичном формате = 151 в десятичном формате.

Этот способ можно легко расширить до 16- или 32-битных двоичных чисел, просто добавив дополнительные столбцы

Обратите внимание, что проще всего начать с правого конца и двигаться влево, умножая значение цифры на 2 по мере продвижения

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

Пример 3: перевести 231.20 из четверичной в семеричную систему счисления.

Общий смысл алгоритма перевода дробного числа, аналогичен алгоритму перевода целого, т.е. вначале переводим в десятичную, а затем в семеричную:

1. Для перевода числа 231.20 в десятичную систему воспользуемся формулой:

An = an-1 ∙ qn-1 + an-2 ∙ qn-2 + ∙∙∙ + a ∙ q + a-1 ∙ q-1 + ∙∙∙ + a-m ∙ q-m

Отсюда:

231.204=2 ∙ 42 + 3 ∙ 41 + 1 ∙ 4 + 2 ∙ 4-1 + 0 ∙ 4-2 = 2 ∙ 16 + 3 ∙ 4 + 1 ∙ 1 + 2 ∙ 0.25 + 0 ∙ 0.0625 = 32 + 12 + 1 + 0.5 + 0 = 45.510

Таким образом:

231.204 = 45.510

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

  1. Перевести 45 в семеричную систему;
  2. Перевести 0.5 в семеричную систему;

2.1 Для того, чтобы перевести число 45 из десятичной системы счисления в 7-ую, необходимо осуществить последовательное деление на 7, до тех пор пока остаток не будет меньше чем 7.

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

4510=637

2.2 Для перевода десятичной дроби 0.5 в 7-ую систему, необходимо выполнить последовательное умножение дроби на 7, до тех пор, пока дробная часть не станет равной 0 или пока не будет достигнута заданная точность вычисления. Получаем:

0.5 ∙ 7 = 3.5 (3) 0.5 ∙ 7 = 3.5 (3) 0.5 ∙ 7 = 3.5 (3) 0.5 ∙ 7 = 3.5 (3) 0.5 ∙ 7 = 3.5 (3) 0.5 ∙ 7 = 3.5 (3) 0.5 ∙ 7 = 3.5 (3) 0.5 ∙ 7 = 3.5 (3) 0.5 ∙ 7 = 3.5 (3) 0.5 ∙ 7 = 3.5 (3) 0.5 ∙ 7 = 3.5 (3)

Ответом станет прямая последовательность целых частей произведения. Т.е.

0.510=0.333333333337

2.3. Осталось соединить переведенные части, таким образом:

45.510=63.333333333337

Ответ: 231.204 = 63.333333333337.

1.2 Двоичная

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

1.2.1 Двоичная → Десятичная

Для перевода чисел с двоичной формы в десятичную нужно знать два нюанса. Первый – у каждого нолика и единички есть множитель 2 в n-й степени, при котором n увеличивается справа налево ровно на единичку. Второй – после перемножения все числа нужно сложить и мы получим число в десятичной форме. В итого у нас будет формула такого вида:

Где,D – это число в десятичной форме, которое мы ищем;n – количество символов в двоичном числе;a – число в двоичной форме на n-й позиции (т.е. первый символ, второй, и т.п.);p – коэффициент, равный 2,8 или 16 в степени n (в зависимости от системы счисления)

К примеру возьмем число 110102. Смотрим на формулу и записываем:

  • Число состоит из 5 символов (n=5)
  • a5 = 1, a4 = 1, a3 = 0, a2 = 1, a1 = 0

  • p = 2 (так как переводим из двоичной в десятичную)

В итоге имеем:

Кто привык записывать справа на лево, форму будет выглядеть так:

Но, как мы знаем, от перестановки слагаемых сумма не меняется. Давайте теперь переведем наши числа в десятичную форму.

Рисунок 1.5 – Перевод чисел из двоичной в десятичную систему

1.2.2 Двоичная → Восьмеричная

При переводе нам нужно двоичное число разбить на группы по три символа справа налево. Если последняя группа не состоит из трех символов, то мы просто возмещаем недостающие биты ноликами. К примеру:

10101001 = 10 101 001

1011100 = 001 011 100

Каждая группа битов – это одно из восьмеричных чисел. Чтобы узнать какое, нужно использовать написанную выше формулу 1.2.1 для каждой группы битов. В результате мы получим.

Рисунок 1.6 – Перевод чисел из двоичной в восьмеричную систему

1.2.3 Двоичная → Шестнадцатеричная

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

110101011 = 0001 1010 1011

1011100 = 101 1100

001010000 = 000101 0000 = 0101 0000

Каждая группа битов – это одно из шестнадцатеричных чисел. Используем формулу 1.2.1 для каждой группы битов.

Рисунок 1.7 – Перевод чисел из двоичной в шестнадцатеричную систему

Почему типы имеют значение

Рассмотрим двоичное значение 1011 0100. Какое значение оно представляет? Вы, вероятно, сказали бы 180, и если бы это было стандартное двоичное число без знака, вы были бы правы.

Однако, если бы это значение было сохранено с использованием дополнительного кода, оно было бы равно -76.

А если бы значение было закодировано другим способом, оно могло быть чем-то совсем другим.

Итак, как C++ узнает, печатать ли переменную, содержащую двоичный код 1011 0100, как 180 или -76?

Здесь в игру вступают типы. Тип переменной определяет, как значение переменной кодируется в двоичном формате и декодируется обратно в десятичное представление. Таким образом, если тип переменной был целочисленным без знака, компилятор знал бы, что 1011 0100 было стандартным двоичным значением и должно быть напечатано как 180. Если бы переменная была целочисленного типа со знаком, компилятор знал бы, что 1011 0100 было закодировано с использованием дополнительного кода (в C++20 теперь это гарантировано) и должно быть напечатано как -76.

Преобразовать десятичное в двоичное в Python

Чтобы преобразовать десятичное число в двоичное в Python, вы должны попросить пользователя ввести число в десятичной системе счисления, чтобы преобразовать это число в двоичную систему счисления, как показано в программе, приведенной ниже.

Программный код Python для преобразования десятичного числа в двоичное

Следующая программа на Python просит пользователя ввести десятичное число, чтобы преобразовать его в двоичное число:

Вот пример запуска вышеупомянутой программы Python, чтобы продемонстрировать, как преобразовать десятичное число в двоичное в Python:

Теперь введите любое число в десятичной системе счисления, скажем, 50, а затем нажмите клавишу ввода, чтобы проверить, каково будет значение данного числа, скажем, 50 в двоичном формате:

Ниже та же программа на оболочке Python:

Интересные записи:

Алгоритм перевода целых десятичных чисел в систему счисления с основанием q

  1. Последовательно выполнять деление десятичного числа и получаемых целых частных на основание новой системы счисления, до тех пор, пока частное не станет равным 0.
  2. Для получения ответа в q-ном коде, необходимо записать, полученные, в результате деления остатки, в обратном порядке.

Пример 1: перевести десятичное число 101 в двоичную систему счисления

Для наглядности произведем деление «столбиком». Решение будет выглядеть следующим образом:

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

Ответ: 10110=11001012

Пример 2: перевести десятичное число 443 в пятеричную систему счисления

Аналогично предыдущему примеру, произведем деление «столбиком». Решение будет выглядеть следующим образом:

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

Ответ: 44310=32335

Пример 3: перевести десятичное число 1187 в девятеричную систему счисления

Решение будет выглядеть следующим образом:

Ответ: 118710=15589

Сложение в двоичном формате

В некоторых случаях (мы увидим один через секунду) бывает полезно иметь возможность сложить два двоичных числа. Складывать двоичные числа на удивление легко (возможно, даже проще, чем складывать десятичные числа), хотя поначалу это может показаться странным, потому что вы к этому еще не привыкли.

Рассмотрим два небольших двоичных числа:

Давайте сложим их. Во-первых, выровняйте их, как мы делали ранее. Затем, начиная справа и продолжая влево, мы складываем цифры в каждом столбце, как мы это делаем с десятичными числами. Однако, поскольку двоичная цифра может быть только 0 или 1, есть только 4 возможных варианта:

  1. 0 + 0 = 0
  2. 0 + 1 = 1
  3. 1 + 0 = 1
  4. 1 + 1 = 0, перенести 1 в следующий столбец

Начнем с первого столбца:

0 + 1 = 1. Легко.

Второй столбец:

1 + 1 = 0, с перенесенной 1 в следующий столбец

Третий столбец:

Это немного сложнее. Обычные 1 + 1 = 0, с переносом 1 в следующий столбец. Однако у нас уже есть 1, перенесенная из предыдущего столбца, поэтому нам нужно добавить 1. Таким образом, мы получаем 1 в этом столбце, и 1 переносится в следующий столбец.

Последний столбец:

0 + 0 = 0, но есть перенесенная 1, поэтому мы прибавляем 1. 1101 = 13 в десятичной системе.

Теперь, как нам добавить 1 к любому заданному двоичному числу (например, 1011 0011)? То же, что и выше, только нижнее число – это двоичная единица.

Метод 2 для преобразования числа из десятичной системы счисления в двоичную

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

Снова рассмотрим десятичное число 148. Какое наибольшее значение двойки, возведенной в степень, меньше 148? 128, так что мы начнем с него.

  • 148 >= 128? Да, поэтому бит со значением 128 должен быть 1. 148 — 128 = 20, что означает, что нам нужно найти биты со значением больше, чем 20.
  • 20 >= 64? Нет, поэтому бит со значением 64 должен быть 0.
  • 20 >= 32? Нет, поэтому бит со значением 32 должен быть равен 0.
  • 20 >= 16? Да, поэтому бит со значением 16 должен быть равен 1. 20 — 16 = 4, что означает, что нам нужно найти биты со значением больше, чем 4.
  • 4 >= 8? Нет, поэтому бит со значением должен быть 0.
  • 4 >= 4? Да, поэтому бит со значением должен быть 1. 4 — 4 = 0, что означает, что все остальные биты должны быть равны 0.

148 = (1 * 128) + (0 * 64) + (0 * 32) + (1 * 16) + (0 * 8) + (1 * 4) + (0 * 2) + (0 * 1) = 1001 0100

В формате таблицы:

Двоичное число 1 1 1
* Значение цифры 128 64 32 16 8 4 2 1
= Результат (148) 128 16 4

Системы счисления: основные сведения

Для перевода чисел из одной системы счисления в другую необходимо владеть основными сведениями о системах счисления и
форме представления чисел в них.

Количество s различных цифр, употребляемых в системе счисления, называется основанием, или базой
системы счисления. В общем случае положительное число X в позиционной системе с основанием s
может быть представлено в виде полинома:

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

В вычислительной технике наибольшее применение нашли двоичная (BIN — binary),
и двоично кодированные системы счисления: восьмеричная (OCT — octal), шестнадцатеричная (HEX — hexadecimal) и двоично-кодированная десятичная (BCD — binary coded decimal).

В дальнейшем для обозначения используемой системы счисления число будет заключаться в скобки, а
в индексе указано основание системы. Число X по основанию s будет обозначено
.

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