学习位操作,一个简单的按位反转的程序

题目:

将32位机上的无符号整数按位反转输出:

例如:25,反转之后输出:2550136832

代码:

 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 
 6 void set_bit(unsigned int &num, int idx)
 7 {
 8     // 将num的从低位数第idx位赋值为1
 9     // idx从0开始
10     unsigned int tmp = 1;
11     tmp = tmp << idx;
12     num = num | tmp;
13 }
14 
15 bool get_bit(unsigned int num, int idx)
16 {
17     // 获取num的从低位数第idx位的值
18     // 1则返回true 
19     // 0则返回false
20     unsigned int tmp = num >> idx;
21     tmp = tmp % 2;
22     return tmp == 1;
23 }
24 
25 int main()
26 {
27     unsigned int num;
28     cin >> num;
29 
30     unsigned int res = 0;
31     for(int i = 0; i < 32; i++)
32     {
33         // 0-31位,每一位都对应反转
34         if(get_bit(num, i))
35             set_bit(res, 31-i);
36     }
37 
38     cout << res <<endl;
39 
40     return 0;
41 }

输出结果:

25
2550136832
请按任意键继续. . .

 

 

posted @ 2013-10-12 10:42  铁甲小宝  阅读(571)  评论(0)    收藏  举报