मान लीजिए हमारे पास एक संख्या n है। हमें जांचना है कि संख्या में केवल पहले और अंतिम स्थान पर दो सेट बिट्स हैं या नहीं।
तो, यदि इनपुट n = 17 जैसा है, तो आउटपुट True होगा क्योंकि n का बाइनरी प्रतिनिधित्व 10001 है, पहले और अंतिम स्थान पर केवल दो 1 हैं।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
- यदि n 1 के समान है, तो
- True लौटाएं
- यदि n - 1, 2 की घात है तो true लौटाएं, अन्यथा false
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
उदाहरण कोड
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