5.01 Запись числа в двоичной системе счисления
Ошибка.
Попробуйте повторить позже
Автомат обрабатывает натуральное число по следующему алгоритму:
- Строится восьмибитная двоичная запись числа
.
- Инвертируются разряды исходного числа (
заменяется на
,
на
).
- К полученному двоичному числу прибавляют единицу.
- Полученное число переводится в десятичную систему счисления.
Для какого числа результат работы алгоритма равен
?
Решение программой
В условии задачи описан алгоритм, для поиска подходящего числа N необходимо «перевести» этот алгоритм с
естественного языка на язык программирования Python. Первым делом переводим число N в двоичную строку с помощью
функции bin, при чём нас интересует восьмибитная двоичная запись, в ней всегда 8 символов, если меньше - нужно
добавить в начало нули (например, 111 -> 00000111). Количество необходимых нулей вычисляется по формуле: 8 - длина
двоичной записи. Далее создаём пустую строку, в которой сохраним инвертированное число. Проходимся по каждой цифре
двоичной записи, если встретили 1, добавляем в новую строку 0 и наоборот. Единицу удобнее добавить после
перевода в десятичную запись, так и сделаем, после чего сравним полученное число с 156 и выведем N, если это
так.
for i in range(1, 128): # Перебор значений N от 1 до 127 s = "0" * (8 - len(bin(i)[2::])) + bin(i)[2::] # Добавляем необходимое количество нулей в начало, чтобы запись имела 8 бит (цифр) x = "" # Строка для хранения инвертированной записи for j in range(len(s)): # Проходимся по каждому индексу if s[j] == "1": # Получаем цифру по индексу j и сравниваем с 1 # Если встречаем 1, добавляем 0 и наоборот x += "0" else: x += "1" if (int(x, 2) + 1) == 156: # Добавляем единицу и сравниваем с нужным числом print(i) # Выводим ответ
Решение вручную:
Разряды инвертируются, нетрудно заметить, что в двоичной записи сумма восьмибитного числа и его
инвертированной версии равна . Кроме того, мы знаем, что x+1 = 156. Значит, можем решить
систему:
|
.
Специальные программы

Программа
лояльности v2.0
Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!
Крути рулетку и покупай курсы со скидкой, которая привязывается к вашему аккаунту.

Бесплатное онлайн-обучение
Для школьников из приграничных территорий России, проживающих в ДНР, ЛНР, Херсонской, Запорожской, Белгородской, Курской, Брянской областях и Крыму.

Налоговые вычеты
Узнай, как получить налоговый вычет при оплате обучения в «Школково».

Специальное предложение
для учителей
Бесплатный доступ к любому курсу подготовки к ЕГЭ, ОГЭ и олимпиадам от «Школково». Мы с вами делаем общее и важное дело, а потому для нас очень значимо быть чем-то полезными для учителей по всей России!

Вернём деньги за курс
за твою сотку на ЕГЭ
Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!