Как найти младший бит заданого числа?

Рейтинг: -1Ответов: 3Опубликовано: 11.02.2023

Для заданого положительного целого A (1 ≤ A ≤ 100), вывести младший бит A. К примеру, если A = 26, то его мы можем записать в двоичном виде, как 11010, младший бит A составляет 10, и на выходе должно быть 2.Другой пример выглядит следующим образом: при A = 88, это число A мы можем записать в двоичной форме 1011000, младший бит у A является 1000, и на выходе должно быть 8.

Входные данные Каждая строка входных данных содержит только одно целое число A (1 ≤ A ≤ 100). Строка, которая содержащий "0" обозначает конец ввода, и эта строка не является частью входных данных. Исходные данные: для каждого числа a, полученного на входе, в отдельной строке вывести его значение младшего бита. Нужно написать на Python

Ответы

▲ 2

можно проверять делимость на степени двойки

A = 88
t = 2
while not A % t:
    t *= 2

print(t//2) # 8
▲ 1

Младший бит числа можно найти, преобразовав его в двоичный вид и находя первый "1" в справа. Мы можем преобразовать число в двоичный вид с помощью встроенной функции bin в Python.

def find_least_significant_bit(a):
    binary = bin(a)
    least_significant_bit = binary.rfind("1") + 1
    return 2**(len(binary) - least_significant_bit)

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

while True:
    a = int(input().strip())
    if a == 0:
        break
    print(find_least_significant_bit(a))

PS. Надеюсь хоть не много помог)

▲ 0

Ммм.... Я все же останусь в касте истинно верующих в то, что "младший бит" любого числа это всегда последний разряд в двоичном представлении и он получается просто как результат остатка от деления на 2

A = 88
bit = A % 2
print(f"Младший бит числа {A} равен {bit}\n")

Выведет:

Младший бит числа 88 равен 0

Но если вдруг все же вам надо найти первый значимый (равный единице) бит справа и вернуть полученное таким образом число, то... Вообще-то можно представить число в двоичной форме, преобразовать в строку, разбить на подстроки по разделителю "1". Длина последнего элемента массива будет искомой степенью двойки )))

Такой вот забавный код

A = 88
Anew = str(bin(A))
print(f"{A} в двоичной записи равно {Anew}")
Anew = Anew.split('1')
degree = len(Anew[-1])
print(f"Наименьшее значимое справа будет 1{Anew[-1]}")
res = 2**degree
print(f"2 в степени {degree} будет {res}\n")

Выведет:

88 в двоичной записи равно 0b1011000
Наименьшее значимое справа будет 1000
2 в степени 3 будет 8