Автор | Сообщение |
|
Отправлено: 06.07.22 16:17. Заголовок: Задание 5 № 178
цитата: | 178) (А.М. Кабанов, Тольятти) Автомат обрабатывает натуральное число N < 128 по следующему алгоритму: 1) Строится восьмибитная двоичная запись числа N. 2) Инвертируются разряды исходного числа (0 заменяется на 1, 1 на 0). 3) К полученному двоичному числу прибавляют единицу. 4) Полученное число переводится в десятичную систему счисления. Чему равен результат работы алгоритма для N = 95? |
| Здравствуйте! Я решала эту задачу двумя способами, у меня никак не выходил ответ "161". 1 способ (программа): def f(n): s = bin(n)[2:] s = '0' * (8 - len(s)) + s f = '' for k in range(len(s)): if s[k] == '0': f += '1' else: f += '0' f += '1' w = int(f, 2) return w print(f(95)) Ответ: 321 2 способ: 1) 95 (10) = 1011111 (2) 2) 01011111 3) 10100000 4) 101000001 5) 101000001 (2) = 321 (10)
|
|
|
Новых ответов нет
[см. все]
|
|
|
Отправлено: 07.07.22 06:15. Заголовок: Единица прибавляется..
Единица прибавляется не как + '1', а просто как + 1 к числу. 1) Изначальное число 95 равно 01011111 2) Инвертируем биты - 10100000 3) Прибавляем 1 - 10100001 4) Переводим в десятичную систему - 128 + 32 + 1 = 161
|
|
|
|
Отправлено: 17.04.23 08:56. Заголовок: mayushka0105 пишет: ..
mayushka0105 пишет: цитата: | def f(n): s = bin(n)[2:] s = '0' * (8 - len(s)) + s f = '' for k in range(len(s)): if s[k] == '0': f += '1' else: f += '0' f += '1' w = int(f, 2) return w print(f(95)) |
| Данную задачку проще решить так: for i in range(1, 256): s = 1+(i^255) if s == 95: print(i)
|
|
|
|
Отправлено: 17.04.23 09:03. Заголовок: Простите, оказываетс..
Простите, оказывается, можно еще проще! print((95^255)+1)
|
|
|
|