Bài toán: cho một số, kiểm tra xem nó có phải lũy thừa của 2 hay không.
Hai cách giải quyết:
Cách 1: Lặp chia cho 2
def find(n):
if (n == 0):
return False
while (n != 1):
if (n % 2 != 0):
return False
n = n // 2
return True
if find(98):
print('Yes')
else:
print('No')
No
Cách 2: Thao tác bit (bitwise)
Số là lũy thừa của 2 khi có đúng 1 bit 1 trong biểu diễn nhị phân. Biểu thức: x & (x - 1) == 0 (với x > 0).
def find(x):
return (x and (not(x & (x - 1))))
if find(98):
print('Yes')
else:
print('No')
No
Kết luận
Đã học 2 cách kiểm tra lũy thừa của 2: lặp chia 2 và thao tác bitwise.