簡體   English   中英

如何打印一位?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM