#include <stdio.h>
int main()
{
int decimal_num, c, result;
printf("Enter an integer in decimal number system\n");
scanf("%d", &decimal_num);
for (c = 31; c >= 0; c--)
{
result = decimal_num >> c;
if (result & 1)
printf("1");
else
printf("0");
}
printf("\n");
return 0;
}
这段代码使用按位运算符将十进制数转换为二进制数。我很难理解for循环中的逻辑,即为什么要使用
result = decimal_num >> c
,以及为什么需要从for (c = 31; c >= 0; c--)
开始迭代。我了解按位AND、OR、XOR和NOT的基本知识,并且知道当奇数与'1'进行AND运算时,结果为'1'否则为'0'(因为所有奇数的最低有效位都为1)。
decimal_num>>c
+result&1
看起来像是隔离和检查单个比特的操作... 请阅读有关移位的内容。 - Jean-Baptiste Yunès