Как переводить из двоичной системы в десятичную
Перейти к содержимому

Как переводить из двоичной системы в десятичную

  • автор:

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

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

Общее представление о системах исчисления

Перевод одного типа в другой происходит по определенным алгоритмам. Каждый имеет свои преимущества и предназначен для разных целей. Двоичная система используется непосредственно самим компьютером в качестве простейшего представления данных. С помощью двух цифр 0 и 1 машина способна читать и обрабатывать любую информацию. Таким образом, число 100 будет выглядеть как сочетание цифр 1100100, а 1000 — 1111101000.

Шестнадцатеричная система подразумевает использование десяти цифр, а также первые 8 букв латинского алфавита. Шестнадцатеричная система кодирует не только числовые значения, но также текстовую информацию. Поэтому применяется для записей кодов ошибок системы или приложений, написания программ на низкоуровневых языках, таких как Java и Microsoft.NET. Таким образом, 1000 выглядит, как 3E8, а слово «число» будет представлено, как 0E2D200E2E210E2F1A0E2E2B0E2E2E.

Система чисел

Как перевести из одной системы в другую

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

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

  • позиционная нотация;
  • удвоение.

Разбор перевода позиционной нотацией будет происходить на примере числа 10011011.

Первый шаг, чтобы произвести перевод числа из двоичной системы в десятичную — возведение всех чисел выражения в степень. Степень с каждым шагом увеличивается на 1, начинается с 0 справа налево. Выглядит это таким образом: 1 8 0 7 0 6 1 5 1 4 0 3 1 1 1 0 . После преобразований получается числовой ряд 128, 64, 32, 16, 8, 4, 2, 1, сопоставляется с начальным 10011011.

Каждое число из возведенного в степень примера умножается на цифру примера 10011011 по порядку. Таким образом, 128 умножается на 1, 64 — на 0, 32 — на 0 и т.д. В итоге вычитаются все нулевые значения и остается 128, 16, 8, 2, 1. Для получения ответа в десятичной системе все цифры суммируются. Результат — 155.

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

Способ подразумевает суммирование всех результатов, основываясь на многочлене a х 0 + b, где b равняется текущему значению, а — предыдущему. Эта функция применяется для каждого знака ряда 10011011. Для получения первого результата, следует исходить из утверждения, что предыдущее значение перед первой цифрой равняется 0. Следуя из этого, после подставления данных образовывается многочлен 0 х 2 + 1 и дает ответ — 1. Для второй цифры 0 получается многочлен 1 х 2 + 0, ответ — 2. Для третьего знака 0 — многочлен 2 х 2 + 0, ответ, соответственно, 4. Сумма равняется результату перевода в десятичной системе.

Перевод чисел

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

Эта задача для перевода числовых знаков, так же как и предыдущая, имеет два варианта решения:

  • вычитание и сравнение уменьшающихся степеней;
  • сокращение с остатком.

Первый способ перевода подразумевает хорошее знание деления на 2. Особенностью способа является то, что при делении образовываются два возможные остатка — 0 и 1. Имено они и формируют числовое значение.

Чтобы перевести число 156 на язык машин, исполняются следующие правила. Для начала сумма делится на 2, что дает результат 78 с нулевым остатком. Первый остаток записывается в двоичное значение. Полученный результат делится снова на 2, что в итоге получается ответ 39 так же с нулевым остатком. Второй остаток записывается в следующий по порядку знак. Половина из числа 39 равняется 19 с остатком 1. После проведения всех операций получается число в двоичной системе — 00111001.

Второй способ формирует числовой ряд из результатов возведения цифры 2 до тех пор, пока это значение не станет больше, чем начальное. Получается последовательность 128, 64, 32, 16, 8, 4, 2, 1. Таким образом, судя по полученным знакам ряда, 156 делится на 128, дает единицу с остатком. Первая цифра в двоичном числе равняется 1. Далее происходит вычитание 128 из 156, что дает ответ 28. Число делится на следующий знак ряда. Таким образом, 26 делится на 64 и это дает 0 с остатком. Это следующее значение в двоичном коде. После проведения всех операций получаем целое двоичное число 00111001_2.

Двойничная и десятичная система

Заключение

Понимание правил, по которым происходит перевод чисел из одной системы в другую, — одно из базовых знаний программирования. Однако каждый раз переводить вручную числа или текст в машинный язык не потребуется. Сегодня существует множество онлайн-сервисов и десктопных приложений для таких целей. А основные значения по ходу работы запоминаются. При этом следует помнить, что глубокое понимание основ отличает начинающего программиста от профессионала.

Видео

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

Как переводить из двоичной системы в десятичную

wikiHow работает по принципу вики, а это значит, что многие наши статьи написаны несколькими авторами. При создании этой статьи над ее редактированием и улучшением работали, в том числе анонимно, 111 человек(а).

Количество просмотров этой статьи: 883 325.

Двоичная система счисления («по основанию два») — система счисления, которая имеет два возможных значения для каждого разряда; часто эти значения представляются как 0 или 1. И наоборот, десятичная (по основанию десять) система счисления имеет десять возможных значений (0,1,2,3,4,5,6,7,8 или 9) для каждого разряда. Чтобы не запутаться при использовании различных систем счисления, основание каждого отдельного числа можно записывать после числа нижним индексом. Например, двоичное число 10011100 можно записать по основанию два как 100111002. А десятичное число 156 может быть записано как 15610, читаться оно будет так: «сто пятьдесят шесть, по основанию десять». Так как двоичная система является внутренним языком компьютеров, то серьезные программисты должны понимать, как переводить из двоичной системы в десятичную. Обратный перевод из десятичной в двоичную зачастую сложнее освоить первым.

Конвертер двоичного числа в десятичное

Десятичное число равно сумме двоичных цифр (d n ), умноженной на их степень 2 (2 n ):

десятичный = d 0 × 2 0 + d 1 × 2 1 + d 2 × 2 2 + .

пример

Найдите десятичное значение 111001 2 :

двоичное число: 1 1 1 0 0 1
степень двойки: 2 5 2 4 2 3 2 2 2 1 2 0

111001 2 = 1⋅2 5 + 1⋅2 4 + 1⋅2 3 + 0⋅2 2 + 0⋅2 1 + 1⋅2 0 = 57 10

Системы счисления

Системы счисления

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

Что такое системы счисления

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

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

Сейчас разные способы записи чисел называются системами счисления.

Систем счисления было придумано довольно много, и даже в наши дни мы используем две системы, возникшие в далёкой древности. Из Древнего Рима к нам пришла римская система счисления, где цифры обозначаются буквами латинского алфавита. За основу римляне взяли количество пальцев на одной руке — 5, и на двух руках — 10. Числа 1, 5 и 10 в римской системе обозначаются буквами I, V и X, и с помощью них можно записать любое число от 1 до 49. Например, VII это 7, а XIX — 19.

От Древних Шумеров мы научились делить дроби на шестьдесят частей. Именно из-за них в нашем часе 60 минут, а в минуте 60 секунд. Шумерская система счисления так и называется — шестидесятеричная. Но, конечно, наиболее привычной выглядит численная запись в системе, которую придумали в Древней Индии. Сейчас ее называют арабской или десятичной системой счисления.

От десятичных чисел к двоичным

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

1072

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

0123456789

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

1×1000+7×100+0×10+2×1

Цифры, записанные в соседних позициях, различаются в десять раз — это и есть десятичная система. Однако, как мы говорили ранее, привычная нам десятичная система — далеко не единственная. Однако, опираясь на неё, нам будет проще понять принципы работы других систем счисления. Например, для записи того же самого числа 1702 в двоичной системе надо придерживаться тех же правил, но вместо десяти цифр нам потребуется всего две — 0 и 1.

Цифры, записанные в соседних позициях, будут различаться не в десять раз, а в два. То есть там, где в десятичной системе мы видим 1, 10, 100, 1 000, 10 000, в двоичной будут числа 1, 2, 4, 8, 16 и так далее.

1×1024+1×512+0×256+ +1×128+0×64+1×32+0×16+ +0×8+1×4+1×2+0×1

Это очень большое двоичное число. Давайте запишем его в привычной форме:

1 1 0 1 0 1 0 0 1 1 0 1024 512 256 128 64 32 16 8 4 2 1

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

11010100110₂

Это особенно важно, когда в тексте одновременно встречаются десятичные и двоичные числа.

11010100110₂ = 1702

Зачем нужна двоичная система

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

Оказывается, когда-то они именно так и работали. Самый первый компьютер ENIAC, разработанный в 1945 году, хранил числа в десятичной системе счисления. Для хранения одной цифры применялась схема, которая называется кольцевым регистром, она состояла из десяти радиоламп.

Чтобы записать все числа до миллиона — от 0 до 999 999 — надо шесть цифр, значит, для хранения таких чисел нужно целых 60 ламп.

Кольцевой регистр

Инженеры заметили, что если бы они кодировали числа в двоичной системе, то для хранения таких же больших чисел им бы потребовалось всего двадцать радиоламп — в три раза меньше!

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

Группа инженеров, создавших первый компьютер, в 1946 году опубликовала статью, где обосновала преимущество двоичной системы для представления чисел в компьютерах. Первой среди авторов была указана фамилия американского математика Джона фон Неймана. Поэтому сейчас принципы проектирования компьютеров называются архитектурой фон Неймана, хотя это не совсем справедливо по отношению к другим изобретателям компьютера.

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

Зачем изучать двоичную систему, если компьютер делает всю работу за нас? Иногда программистам приходится писать программы, которые работают напрямую с оборудованием. Например, разработчики игр должны знать, как работают видеокарты, чтобы сделать компьютерную графику быстрее. А разработчики операционных систем понимают, как устроены диски, чтобы надежно хранить данные.

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

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

Как переводить двоичные числа в десятичные

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

11010

Запишем его в математической записи, помня, что вместо основания 10, мы используем основание 2.

1×16+1×8+0×4+1×2+0×1

Из этого примера видно, что у всех слагаемых только два множителя — 0 и 1. Слагаемые с множителем 0 равны нулю, поэтому их можно отбросить, оставив только слагаемые с множителем 1.

1×16+1×8+1×2

У слагаемых с множителем 1 этот множитель можно не записывать.

16+8+2

Теперь нетрудно посчитать сумму.

26

Вывод: число 11010 в двоичной записи — то же самое, что 26 в десятичной.

11010₂=26

Ещё раз повторим, как перевести двоичное число в десятичное.

  • Записать число в математическом виде
  • Отбросить слагаемые с множителем 0
  • Сложить результат

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

Двоичное число Степень 2 Десятичное число
1 2 2 0 1
10 2 2 1 2
100 2 2 2 4
1000 2 2 3 8
1 0000 2 2 4 16
10 0000 2 2 5 32
100 0000 2 2 6 64
1000 0000 2 2 7 128
1 0000 0000 2 2 8 256
10 0000 0000 2 2 9 512
100 0000 0000 2 2 10 1 024
1 0000 0000 0000 0000 2 2 16 65 536
1 0000 0000 0000 0000 0000 0000 2 2 24 16 777 216
1 0000 0000 0000 0000 0000 0000 0000 0000 2 2 32 4 294 967 296

С помощью этой таблицы можно переводить числа из двоичной системы в десятичную практически «в уме».

11010₂=10000₂+1000₂+10₂=16+8+2=26

Как переводить десятичные числа в двоичные

Эта задача похожа на математическую загадку, и её можно встретить на олимпиаде для школьников.

Чтобы научиться её решать, давайте ещё раз посмотрим на первые натуральные числа в двоичной и десятичной записи.

Десятичное число Двоичное число
1 1 2
2 10 2
3 11 2
4 100 2
5 101 2
6 110 2
7 111 2
8 1000 2
9 1001 2

Обратим внимание на следующую закономерность: все чётные числа — 2, 4, 6 и 8 — в двоичной записи заканчиваются на 0. Все нечётные числа 1, 3, 5, 7 и 9 — на 1. Этому есть простое объяснение — в двоичной записи число 2 это как 10 в десятичной. Если двоичное число делится на два, оно круглое. Математики говорят, что чётные числа делятся на 2 без остатка (или с остатком 0), а нечётные — с остатком 1:

  • при делении 4 на 2 остаток 0;
  • при делении 5 на 2 остаток 1;
  • при делении 6 на 2 остаток 0;
  • при делении 9 на 2 остаток 1.

Попробуем перевести десятичное число 26 в двоичную систему. Для этого используем деление уголком на 2.

Перевод десятичного числа в двоичное

Если 26 разделить на 2, то в результате получится 13, остаток от деления 0. Продолжаем дальше:

  • 13 разделить на 2, в результате получится 6, остаток от деления 1;
  • 6 разделить на 2, в результате получится 3, остаток от деления 0;
  • 3 разделить на 2, в результате получится 1, остаток от деления 1;
  • 1 разделить на 2, в результате получится 0, остаток от деления 1;

Из остатков 1, 1, 0, 1 и 0 складывается нужная нам двоичная запись.

11010

Шестнадцатеричная система счисления

Мы знаем, что компьютер использует числа для представления любой информации. Например, цвета хранятся в виде трёх чисел — яркости красной, зелёной и синей компонентов цвета. На каждый компонент отводится восемь двоичных позиций, поэтому максимальная яркость компонента равна 11111111₂ или 255. Цвет целиком описывается большим 24-х разрядным двоичным числом, например, 11111010 10000000 01110010. Это цвет Salmon из таблицы цветов HTML, он же лососевый цвет.

Лососевый цвет

Старшие восемь позиций отводятся для хранения красного компонента, средние восемь — зелёного, и младшие восемь — синего. Мы видим, что такая запись очень громоздка и неудобна.

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

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

  • В десятичной системе десять цифр, а в шестнадцатеричной — шестнадцать
  • В десятичной системе соседние позиции отличаются в десять раз, а в шестнадцатеричной — в шестнадцать раз

Как и в случае с двоичной системой, цифры 0, 1, 2, 3, 4, 5, 6, 7, 8 и 9 заимствуются из десятичной системы. Но в данном случае этих цифр не хватает: нужно ещё шесть. Их в шестнадцатеричной системе принято обозначать первыми буквами английского алфавита:

Основание 16 Основание 10 Основание 2
0 0 0
1 1 1
2 2 10
3 3 11
4 4 100
5 5 101
6 6 110
7 7 111
8 8 1000
9 9 1001
A 10 1010
B 11 1011
C 12 1100
D 13 1101
E 14 1110
F 15 1111

Шестнадцатеричная система счисления хороша тем, что группа из четырёх двоичных цифр кодируется одной шестнадцатеричной цифрой. Таким образом, лососевый цвет выглядит как:

1111 1010 1000 0000 0111 0010

В шестнадцатеричной системе счисления он записывается так:

FA 80 72

Вначале трудно понять, каков порядок у шестнадцатеричного числа FA. Как и в случае с двоичными числами, программисты обычно помнят порядки круглых шестнадцатеричных чисел. Но можно не запоминать, а подглядывать в эту таблицу:

Шестнадцатеричное число Десятичное число
10 16 16
20 16 32
30 16 48
40 16 64
50 16 80
60 16 96
70 16 112
80 16 128
90 16 144
A0 16 160
B0 16 176
C0 16 192
D0 16 208
E0 16 224
F0 16 240
100 16 256
1000 16 4 096
1 0000 16 65 536
10 0000 16 1 048 576
100 0000 16 16 777 216
1000 0000 16 268 435 456
1 0000 0000 16 4 294 967 296

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

Восьмеричная система счисления

Восьмеричная система когда-то использовалась наравне с шестнадцатеричной. Из названия понятно, что она использует всего восемь цифр: 0, 1, 2, 3, 4, 5, 6 и 7. Восьмеричная система подходит для представления шести-, девяти- и двенадцатиразрядных двоичных чисел.

Такие числа встречаются нечасто. Один из самых известных примеров использования восьмеричных чисел — права доступа в операционной системе UNIX. Они записываются девятизначным двоичным числом, например 110100100 или 111101100. Запоминать и передавать такие числа неудобно, поэтому программисты предпочитают восьмеричную систему счисления, и записывают права доступа в виде 644 или 754.

Популярные операционные системы Linux и MacOS берут своё начало в UNIX, поэтому там права доступа также задаются восьмеричным числом.

stat и chmod

Пользователи UNIX используют команду stat, чтобы узнать права доступа, и команду chmod, чтобы изменить их. На рисунке вы видите, что команды stat и chmod используют восьмеричные числа. Подробный рассказ об этих командах выходит за рамки нашей статьи. Узнаете больше о правах доступа, и о том, что означают эти числа, можно изучив командную строку Linux.

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

Конвертация чисел в программах

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

Python

Чтобы записать в Python двоичное число, добавьте перед ним префикс 0b. Десятичное число 26 можно записать в виде 0b11010. У шестнадцатеричных чисел префикс 0x, а у восьмеричных — 0o.

Во всех случаях, чтобы записать число, мы пишем сначала цифру ноль «0», а затем букву, которая определяет систему счисления. Буква «b» — первая в слове binary (двоичный), а буква «o» — в слове octal (восьмеричный). Буква «x» выбивается из общего правила — это третья буква в слове hexadecimal (шестнадцатеричный).

Функции bin() , hex() и oct() преобразуют число в двоичную, шестнадцатеричную и восьмеричную системы.

Благодаря префиксной записи и функциям bin() , hex() и oct() , мы можем преобразовывать числа из любой системы в любую.

JavaScript

В JavaScript для представления чисел используются те же самые префиксы, что и в Python. 0b11010, 0x1a и 0o32 — записи числа 26 в двоичной, шестнадцатеричной и восьмеричной системах счисления.

Для преобразования чисел в другую систему счисления нужно вызывать метод toString() , передав в качестве параметра основание системы.

Обычно в JavaScript мы можем вызвать метод у объекта с помощью точки. Например, если мы сохранили число в переменной i , мы можем узнать его шестнадцатеричное представление, вызвав метод i.toString(16) . Но мы не можем вызывать метод у числа 2 — 2.toString(16) — потому что в JavaScript точка в записи чисел разделяет целую и дробную части. Если дробная часть равна нулю, её можно не записывать, поэтому «2.» означает то же самое, что и «2.0».

В примере вы видите три корректных способа обойти эту проблему, и вызвать метод toString() у числа 26.

Сервисы для перевода из системы в систему

Существует множество сервисов для перевода чисел из системы в систему. Это умеет даже Google. Чтобы перевести двоичное число, например, 11010 в десятичную систему, надо ввести запрос 0b11010 decimal.

0b11010 decimal

Чтобы перевести десятичное число, например, 26 в двоичную систему, надо ввести запрос 26 binary.

26 binary

Обратите внимание, что Google использует префикс 0b, чтобы отличать двоичные числа от десятичных.

Чтобы перевести десятичное число 137 в шестнадцатеричную систему, введите запрос 137 hex.

137 hex

Чтобы перевести шестнадцатеричное число 2BAD в десятичную систему, введите запрос 0x2BAD decimal.

0x2BAD decimal

Google использует префикс 0x для того, чтобы отличать шестнадцатеричные числа от всех прочих. Чтобы перевести число 121 в восьмеричную систему, введите запрос 121 octal.

121 octal

Чтобы перевести число обратно, введите в строке поиска запрос 0o171 decimal.

0o171 decimal

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

Заключение

Люди изобрели разные способы записывать числа. Мы называем их системами счисления. Привычный для нас способ записи называется десятичной системой счисления.

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

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

Существует ряд алгоритмов, которые помогают перевести число из одной системы в другую, но они достаточно запутанные. Проще использовать Google.

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

Вы можете конвертировать числа из системы в систему на своём любимом языке программирования.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *