请告诉我如何打印一下,如printf("%d",bit);
。
答案 0 :(得分:19)
如果bit只是一个包含最低有效位所需值的int,那么:
printf("%d", bit & 0x1);
应该这样做。 &正在使用仅设置了第一个有效位的数字进行二进制AND运算,因此您将删除整数中的所有其余位。
答案 1 :(得分:9)
如果你需要概括超过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');
答案 2 :(得分:6)
相关问题: How do you set, clear, and toggle a single bit?是对c和c ++中单位访问的扩展讨论。
答案 3 :(得分:3)
打印n:
的第m位(m,从1..16或32开始)void print_bit(n, m)
{
printf("%d", n & (1 << (m - 1)));
}
如果位计数器从0开始,则删除- 1
位。
答案 4 :(得分:1)
C ++答案比C89答案容易,使用原生bool类型:
bool b = true;
std::cout << b;
C99非常相似:
_Bool b = 1;
printf("%d", b);
答案 5 :(得分:1)
您可以使用“union”:
union bitshow {
unsigned bit1:1;
int i;
};
int main() {
union bitshow bit;
cin >> bit.i;
cout << bit.bit1;
return 0;
}