Nik*_*ani 9 c bit-manipulation
现在,我做的是这样的:
void print_bits(unsigned int x)
{
int i;
for(i=WORD_SIZE-1; i>=0; i--) {
(x & (1 << i)) ? putchar('1') : putchar('0');
}
printf("\n");
}
Run Code Online (Sandbox Code Playgroud)
另外,有一个独立于字大小的解决方案(在我的例子中当前设置为32)会很棒.
这个怎么样:
void print2Bits(int a) {
char* table[] = {
"00",
"01",
"10",
"11"
};
puts(table[a & 3]);
}
void printByte(int a) {
print2Bits(a >> 6);
print2Bits(a >> 4);
print2Bits(a >> 2);
print2Bits(a);
}
void print32Bits(int a) {
printByte(a >> 24);
printByte(a >> 16);
printByte(a >> 8);
printByte(a);
}
Run Code Online (Sandbox Code Playgroud)
我认为,这就是您在没有循环的情况下编写二进制数的结束。