สมมติว่าเรามีจำนวน n เราต้องตรวจสอบว่าบิตทั้งหมดถูกตั้งค่า (1) สำหรับจำนวน n ที่กำหนดหรือไม่
เช่น ถ้าอินพุตเป็น n = 255 ผลลัพธ์จะเป็น True เนื่องจากตัวแทนแบイนารีของ 255 คือ 11111111
ในการแก้ปัญหานี้ เราจะทำตามขั้นตอนดังนี้:
- ถ้าจำนวนเท่ากับ 0 แล้ว
- คืนค่า False
- while จำนวน > 0 ทำ
- ถ้าจำนวนเป็นเลขคู่ แล้ว
- คืนค่า False
- จำนวน := ผลหารของ (จำนวน / 2)
- ถ้าจำนวนเป็นเลขคู่ แล้ว
- คืนค่า True
ลองดูการนำไปใช้ดังต่อไปนี้เพื่อเข้าใจได้ดียิ่งขึ้น:
ตัวอย่าง
def solve(number):
if number == 0:
return False
while number > 0:
if (number & 1) == 0:
return False
number = number >> 1
return True
n = 255
print(solve(n))
อินพุต
255
ผลลัพธ์
True