Число в форме 2 ^ n записывается в двоичном виде 1, за которым следует серия 0 или более 0.
Например, 1, 10, 100, 1000, ... и т. Д. Имеют степень 2.
Чтобы получить наибольшую степень 2, которая делит данное число, вы можете сделать следующие два шага:
Введите число в двоичном виде. Например, если число 168, напишите 10101000.
Вычеркнуть все биты перед первым битом с правой стороны, который содержит 1. В случае 168, после вычеркивания первой части 10101000 остается 1000 (= 8 в десятичном виде).
То, что остается, - это ваш результат, то есть высшая степень 2, которая делит число.
Программно, пусть x - ваш номер ввода. Тогда ваш желаемый результат будет: x - (x ^ (x-1))
Пояснение:
x ^ (x-1)
[означает x XOR x-1] избавляется от первого 1 со стороны младшего бита (младший бит)
x - (x ^ (x-1))
избавляется от оставшейся части и сохраняет только первую 1 со стороны LSB.