学习位操作,一个简单的按位反转的程序
题目:
将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
请按任意键继续. . .