как перевести из двоичной в десятичную и обратно, вечно путаюсь перед егэ
Скоро ЕГЭ по информатике, а я каждый раз туплю с переводами. Дано число 1011 в двоичной — надо в десятичную. И наоборот, число 13 в десятичной — перевести в двоичную.
Репетитор показывал какие-то степени двойки, но я уже забыл порядок. Пробую так:
1011 -> 1+0+1+1 = 3 ???
Это явно бред, у меня всё время разные ответы выходят. Можете на этих двух числах прям по шагам показать, чтоб я наконец понял?
2 ответа
Смотри, переводим 1011 из двоичной в десятичную — раскладываем по степеням двойки. Главное правило: считаем разряды СПРАВА налево, начиная с нулевого.
Подписываем над каждой цифрой её степень двойки (справа 2^0, потом 2^1, 2^2, 2^3):
цифры: 1 0 1 1
степень: 2^3 2^2 2^1 2^0
значение: 8 4 2 1
Теперь складываем только там, где стоит единица:
8·1 + 4·0 + 2·1 + 1·1 = 8 + 0 + 2 + 1 = 11.
То есть 1011 в двоичной = 11 в десятичной.
Теперь обратно, 13 → в двоичную. Делим на 2 и записываем остатки:
13 : 2 = 6, остаток 1
6 : 2 = 3, остаток 0
3 : 2 = 1, остаток 1
1 : 2 = 0, остаток 1
Остатки читаем СНИЗУ ВВЕРХ: 1101. Проверим: 8+4+0+1 = 13, сходится.
Приём чтоб не путаться: степени двойки запиши заранее в столбик 1, 2, 4, 8, 16, 32, 64, 128 — и при переводе просто подставляй. А при делении главное не забыть, что остатки читаются с конца (снизу вверх).
Проверить себя на питоне можно так:
print(int('1011', 2)) # 11
print(bin(13)) # 0b1101
Но на экзамене калькулятора нет, так что тренируй руками.
Типичная ошибка как у тебя — складывать сами цифры. Двоичная это не сумма цифр, а сумма степеней двойки.
Быстрый лайфхак для обратного перевода: вычитай самую большую степень двойки, которая помещается. 13: помещается 8 (ставим 1, осталось 5), помещается 4 (1, осталось 1), 2 не помещается (0), 1 помещается (1) → 1101. Тот же ответ, иногда быстрее деления.