请告诉我如何打印一个位(bit),例如
printf("%d",bit);
。如果bit只是一个包含你想要的最低位值的整数,那么:
printf("%d", bit & 0x1);
应该这样做。& 运算符是将一个只有第一位为1的数字与另一个数字进行按位与运算,因此你在整数中删除了所有其他位。
如果您需要比 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');
((val) >> (bit)) & 0x1
,这样你就可以将其作为整数打印,而不是三元运算符? - Aaron Dufour要打印 n 的第 m 位(m 为 1..16 或 32):
void print_bit(n, m)
{
printf("%d", n & (1 << (m - 1)));
}
如果您的比特计数器从0开始,请移除- 1
位。
union bitshow {
unsigned bit1:1;
int i;
};
int main() {
union bitshow bit;
cin >> bit.i;
cout << bit.bit1;
return 0;
}
使用本地的bool类型,C++的答案比C89更容易:
bool b = true;
std::cout << b;
C99非常相似:
_Bool b = 1;
printf("%d", b);