我该如何打印一位?

请告诉我如何打印一下,比如printf("%d",bit);

如果bit只是一个包含最低有效位所需值的int,那么:

 printf("%d", bit & 0x1); 

应该这样做。 &正在使用只有第一个有效位设置的数字进行二进制AND运算,因此您将删除整数中的所有其余位。

如果你需要概括超过Herms,你可以这样做:

 #define IsBitSet(val, bit) ((val) & (1 << (bit))) /* ... your code ... */ printf ("%c", IsBitSet(bit, 0) ? '1' : '0'); 

printf相当于Herms的答案。

如果你在谈论C中的位域,你可以这样做:

 struct foo { int b:1; } myFoo; printf("%c", myFoo.b ? '1' : '0'); 

相关问题: 如何设置,清除和切换单个位? 是对c和c ++中单比特访问的扩展讨论。

要打印n的第m位(m从1..16或32):

 void print_bit(n, m) { printf("%d", n & (1 << (m - 1))); } 

如果位计数器从0开始,则删除- 1位。

C ++答案比C89答案容易,具有原生bool类型:

 bool b = true; std::cout << b; 

C99非常相似:

 _Bool b = 1; printf("%d", b); 

你可以使用“union”:

 union bitshow { unsigned bit1:1; int i; }; int main() { union bitshow bit; cin >> bit.i; cout << bit.bit1; return 0; }