[英]How do I print one bit?
請告訴我如何打印一點,例如printf("%d",bit);
。
如果bit只是一個包含最低有效位中所需值的int,則:
printf("%d", bit & 0x1);
應該這樣做。 &正在進行一個僅與第一個有效位設置的數字的二進制與運算,因此您要刪除整數中的所有其余位。
如果您需要推廣除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個位(1..16或32中的m):
void print_bit(n, m)
{
printf("%d", n & (1 << (m - 1)));
}
如果您的位計數器從0開始,請刪除- 1
位。
C ++答案比C89答案更簡單,它具有本地布爾類型:
bool b = true;
std::cout << b;
C99非常相似:
_Bool b = 1;
printf("%d", b);
您可以使用“聯合”:
union bitshow {
unsigned bit1:1;
int i;
};
int main() {
union bitshow bit;
cin >> bit.i;
cout << bit.bit1;
return 0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.