Задачка за задачкой
Сколько единиц содержится в двоичной записи значения выражения:
$8^<16>+2^<52>−15$ ?
Решение.
8^16+2^52−15=2^52+2^48−2^4+2^0
2^52 в бинарной системе: 1 символ ‘1‘ и 51 символ ‘0‘
2^48 в бинарной системе: 1 символ ‘1‘ и 47 символов ‘0‘
2^52+2^48 в бинарной системе: 1 символ ‘1‘ , 3 символа ‘0‘, 1 символ ‘1‘ , 47 символов ‘0‘
2^4: 1 символ ‘1‘ , 3 символа ‘0‘
2^52+2^48−2^4 в бинарной системе: 1 символ ‘1‘ , 4 символа ‘0‘, 44 символа ‘1‘, 4 символа ‘0‘
2^52+2^48−2^4+2^0 в бинарной системе:
1 символ ‘1‘, 4 символа ‘0‘, 44 символа ‘1‘, 3 символа ‘0‘, 1 символ ‘1‘
Подсчёт количества едениц в строке
Сколько единиц содержится в двоичной записи значения выражения: 4^255 + 2^255 − 255?
Что не так? И пожалуйста объясните.
Способ 1.
Приводим к строке, вызываем строковый метод подсчета символа.
Способ 2.
Считаем количество единиц, так как функция bin переводит к строковому типу вида ‘0bxxx’, где xxx — цифры числа в двоичном представлении.
Способ 3.
Также существует несложный алгоритм.
4^255 = 2^(255 * 2) степень двойки, будет обозначать единица в двоичном представлении данной суммы.
С вычитанием интереснее, можно проследить следующую закономерность:
2^n — 2^m — будет содержать n — m единиц (проверьте это и докажите самостоятельно).
Отсюда сделаем следующий финт: -255 = -256 + 1 = -2^8 + 2^0
В итоге наше выражение: 2^(255 * 2) + 2^255 — 2^8 + 1 будет иметь 1 + (255 — 8) + 1 единицу, так как 2^255 — 2^8 четное число и значит нулевой бит у него будет нулевой и прибавление единицы добавит только единицу.