|
5鱼币
- #include <stdio.h>
- #include <math.h>
- #define NUM 32
- int main()
- {
- unsigned int a = 0, b = 0;
- int i = 31, j = 0;
- int c[NUM] = {0};
- int d[NUM] = {0};
- scanf("%d", &a);
- //下面的功能是实现一个二进制逆序的
- while (i--)
- {
- c[i] = a % 2; //这里把a%2的余数从索引31往下递减赋值给 c 数组
- d[j++] = c[i]; //这里把c的值赋给j数组
- b += d[j] * pow(2, i);
- //因为int是4字节即32位所以从2^32依次递减指数跟d数组的值相乘
- a=a/2;
- }
- printf("%d \n",b);
- }
复制代码
为什么我的运行后不行。。。不输出结果
- #include <stdio.h>
- #include <math.h>
- #define NUM 32
- int main()
- {
- unsigned int a = 0, b = 0;
- int i = 31, j = 0;
- int c[NUM] = {0};
- int d[NUM] = {0};
- scanf("%d", &a);
- //下面的功能是实现一个二进制逆序的
- while (i--)
- {
- printf("a:%u b:%u i:%d j:%d\n", a, b, i, j); // <-----------------------------多加这一行你就清楚知道什么事了
- c[i] = a % 2; //这里把a%2的余数从索引31往下递减赋值给 c 数组
- d[j++] = c[i]; //这里把c的值赋给j数组
- b += d[j] * pow(2, i);
- //因为int是4字节即32位所以从2^32依次递减指数跟d数组的值相乘
- a=a/2;
- }
- printf("%d \n",b);
- }
复制代码
|
|