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 };

 

posted on 2018-05-22 11:18  高数考了59  阅读(126)  评论(0)    收藏  举报