Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ตรวจสอบว่าตัวเลขมีการตั้งค่าบิตแรกและบิตสุดท้ายใน Python . หรือไม่


สมมติว่าเรามีตัวเลข n เราต้องเช็คว่าตัวเลขนั้นมีแค่ 2 set bit ที่ตำแหน่งแรกและตำแหน่งสุดท้ายหรือไม่

ดังนั้น หากอินพุตเป็น n =17 เอาต์พุตจะเป็น True เนื่องจากการแสดงเลขฐานสองของ n คือ 10001 มีเพียง 1 สองตัวที่ตำแหน่งแรกและตำแหน่งสุดท้าย

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • ถ้า n เหมือนกับ 1 แล้ว
    • คืนค่า True
  • คืนค่า จริง ถ้า n - 1 ยกกำลัง 2 มิฉะนั้น เท็จ

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

โค้ดตัวอย่าง

def is_pow_of_two(n):
   return (n & n-1) == 0

def solve(n):
   if n == 1:
      return True
   return is_pow_of_two (n-1)
      
n = 17
print(solve(n))

อินพุต

17

ผลลัพธ์

True