#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;
}
Run Code Online (Sandbox Code Playgroud)
此代码采用十进制数并使用按位运算符将其转换为二进制数。我很难理解 for 循环内部的逻辑result = decimal_num >> c以及它为什么从for (c = 31; c >= 0; c--). 我了解按位 AND、OR、XOR 和 NOT 的基础知识,我知道当奇数与“1”进行 ANDED 时,结果为“1”,否则为“0”(因为所有赔率的最低有效位为 1)。