我一直在做作业,到目前为止,这就是我所得到的。
int n, c;
printf("Enter a decimal\n");
scanf_s("%d", &n);
printf("%d in binary is: ", n);
for (c = 7; c >= 0; c--)
{
if (n >= 1)
printf("1");
n = n - 1;
else (n < 1)
printf("0");
n = n / 2;
}
我是代码新手,正在努力弄清楚从这里去哪里。任何帮助将不胜感激。
答案 0 :(得分:0)
void printbin(unsigned char val)
{
for(unsigned char i = 0x80; i; i >>= 1)
printf("%c", val & i ? '1' : '0');
printf("\n");
}
答案 1 :(得分:0)
使用位掩码测试是否设置了位。要构建位掩码,可以使用位移:
1 << 0 // shift 1 0 bits to the left: 0b00000001
1 << 1 // shift 1 0 bits to the left: 0b00000010
1 << 2 // shift 1 0 bits to the left: 0b00000100
1 << 3 // shift 1 0 bits to the left: 0b00001000
1 << 4 // shift 1 0 bits to the left: 0b00010000
1 << 5 // shift 1 0 bits to the left: 0b00100000
1 << 6 // shift 1 0 bits to the left: 0b01000000
1 << 7 // shift 1 0 bits to the left: 0b10000000
然后,您可以使用该值来测试是否使用按位与运算符设置了特定位:
value & (1 << 4) // evaluates to true if bit 5 is set.
// counted 1-based from the right.
要使用它来输出8位值:
char unsigned value = 42; // an 8-bit value
for (int bit = 8; bit; --bit) { // count from 8 to 1
putchar(value & (1 << (bit - 1)) ? '1' : '0');
}