标签:bsp rev 包含 define nbsp -- crt sign for
如:
在32位机器上25这个值包含下列各位:
00000000000000000000000000011001
翻转后:(2550136832)
10011000000000000000000000000000
程序结果返回:
2550136832
思路:第1位逆转到了第32位->后整数的值为2^31(2的31次方)
第i位逆转到了第32-i位->后整数的值为2^(32-i)(2的(32-i)次方)*(n>>(i-1))&1
累加每一位逆转之后的值-->二进制模式从左到右翻转后的值则为程序结果返回值。
1 //二进制位模式从左到右翻转
2 #include<stdio.h>
3 #include<math.h>
4 #define _CRT_SECURE_NO_WARNINGS
5
6 unsigned int reverse_bit(unsigned int n)
7 {
8 unsigned int num = 0;
9 int i = 0;
10 for (i = 1;i <= 32;++i)
11 {
12 num += (n >> (i - 1) & 1) * pow(2, 32 - i);
13 }
14 return num;
15 }
16
17 int main()
18 {
19 //在32位机器上25这个值包含下列各位:
20 //00000000000000000000000000011001
21 //翻转后:(2550136832)
22 //10011000000000000000000000000000
23 //程序结果返回:
24 //2550136832
25 unsigned int n = 0;
26 scanf("%u",&n);
27 printf("%u\n", reverse_bit(n));
28
29 return 0;
30 }
标签:bsp rev 包含 define nbsp -- crt sign for
原文地址:https://www.cnblogs.com/cuckoo-/p/10363185.html