मान लीजिए कि हमारे पास एक अहस्ताक्षरित संख्या x है, और हम आसानी से इसका द्विआधारी प्रतिनिधित्व (32 बिट अहस्ताक्षरित पूर्णांक) पा सकते हैं। हमारा काम बिट्स को उलटना है। तो अगर बाइनरी प्रतिनिधित्व 00000000000000000000001001110100 की तरह है, तो उलट बिट्स 00101110010000000000000000000000 होंगे। इसलिए हमें बिट्स को उलटने के बाद वास्तविक संख्या वापस करनी होगी
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- मान लीजिए n दी गई संख्या है
- उत्तर दें:=0
- के लिए मैं :=31 नीचे से 0:
- उत्तर:=उत्तर दें या (n और i), और इसे बाईं ओर i बार शिफ्ट करें
- n :=n दाएँ 1 बिट शिफ्ट करने के बाद
- वापसी का जवाब
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
#include <bits/stdc++.h> using namespace std; class Solution { public: uint32_t reverseBits(uint32_t n) { uint32_t ans = 0; for(int i = 31; i >= 0; i--){ ans |= (n & 1) <<i; n>>=1; } return ans; } }; main(){ Solution ob; cout << ob.reverseBits(0b00000000000000000000001001110100); }
इनपुट
0b00000000000000000000001001110100
आउटपुट
775946240