1 static int wing=[]() 2 { 3 std::ios::sync_with_stdio(false); 4 cin.tie(NULL); 5 return 0; 6 }(); 7 8 class Solution 9 { 10 public: 11 uint32_t reverseBits(uint32_t n) 12 { 13 uint32_t res=0,cur=1; 14 int offset=1; 15 while(n) 16 { 17 int cbit=n%2; 18 if(cbit) 19 res+=cur<<(32-offset); 20 offset++; 21 cur=1; 22 n/=2; 23 } 24 return res; 25 } 26 };
利用对2求余,把末尾的位一个一个放到新数的前面相应位,达到逆置位的目的。
1 static int wing=[]() 2 { 3 std::ios::sync_with_stdio(false); 4 cin.tie(NULL); 5 return 0; 6 }(); 7 8 class Solution 9 { 10 public: 11 uint32_t reverseBits(uint32_t n) 12 { 13 uint32_t res=0; 14 int i=32; 15 while(i) 16 { 17 int cbit=n%2; 18 res=2*res+cbit; 19 n/=2; 20 i--; 21 } 22 return res; 23 } 24 };
1 static int wing=[]() 2 { 3 std::ios::sync_with_stdio(false); 4 cin.tie(NULL); 5 return 0; 6 }(); 7 8 class Solution 9 { 10 public: 11 uint32_t reverseBits(uint32_t n) 12 { 13 uint32_t res=0; 14 int i=32; 15 while(i) 16 { 17 res<<=1; 18 res+=n&1; 19 n>>=1; 20 i--; 21 } 22 return res; 23 } 24 };
浙公网安备 33010602011771号