How do I print one bit?

你。 提交于 2019-12-04 03:14:14

问题


Please tell me how do I print a bit, like printf("%d",bit);.


回答1:


If bit is just an int that contains the value you want in the least significant bit, then:

printf("%d", bit & 0x1);

should do it. The & is doing a binary-AND with a number with only the first significant bit set, so you're removing all the rest of the bits in the integer.




回答2:


If you need to generalize more than Herms, you could do this:

#define IsBitSet(val, bit) ((val) & (1 << (bit)))

/* ... your code ... */

printf ("%c", IsBitSet(bit, 0) ? '1' : '0');

The printf is equivalent to Herms answer as is.

If you're talking about bitfield in C, you can do this:

struct foo { int b:1; } myFoo;

printf("%c", myFoo.b ? '1' : '0');



回答3:


Related question: How do you set, clear, and toggle a single bit? is an extended discussion of single-bit access in c and c++.




回答4:


To print the m-th bit (m from 1..16 or 32) of n:

void print_bit(n, m)
{
    printf("%d", n & (1 << (m - 1)));
}

Remove the - 1 bit if your bit counter starts at 0.




回答5:


The C++ answer is easier than the C89 one, with the native bool type:

bool b = true;
std::cout << b;

C99 is quite similar:

_Bool b = 1;
printf("%d", b);



回答6:


You can use "union":

union bitshow {
    unsigned bit1:1;
    int i;
};

int main() {
    union bitshow bit;
    cin >> bit.i;
    cout << bit.bit1;
    return 0;
}


来源:https://stackoverflow.com/questions/349931/how-do-i-print-one-bit

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!