请告诉我如何打印一点,例如printf("%d",bit);
.
andrey
问问题
17595 次
6 回答
20
如果 bit 只是一个 int ,它在最低有效位中包含您想要的值,那么:
printf("%d", bit & 0x1);
应该这样做。& 正在对仅设置第一个有效位的数字进行二进制与运算,因此您将删除整数中的所有其余位。
于 2008-12-08T15:55:37.513 回答
10
如果您需要概括的不仅仅是 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');
于 2008-12-08T16:01:48.890 回答
6
相关问题:您如何设置、清除和切换单个位?是对 c 和 c++ 中的单位访问的扩展讨论。
于 2008-12-08T16:17:42.150 回答
3
要打印 n 的第 m 位(m 来自 1..16 或 32):
void print_bit(n, m)
{
printf("%d", n & (1 << (m - 1)));
}
- 1
如果您的位计数器从 0 开始,请删除该位。
于 2008-12-08T16:00:29.033 回答
1
您可以使用“联合”:
union bitshow {
unsigned bit1:1;
int i;
};
int main() {
union bitshow bit;
cin >> bit.i;
cout << bit.bit1;
return 0;
}
于 2011-07-11T11:38:11.783 回答
1
C++ 的答案比 C89 的答案更容易,使用本机 bool 类型:
bool b = true;
std::cout << b;
C99 非常相似:
_Bool b = 1;
printf("%d", b);
于 2008-12-09T10:10:16.790 回答