我该如何打印一位?

时间:2008-12-08 15:53:30

标签: c printf bit

请告诉我如何打印一下,如printf("%d",bit);

6 个答案:

答案 0 :(得分:19)

如果bit只是一个包含最低有效位所需值的int,那么:

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

应该这样做。 &正在使用仅设置了第一个有效位的数字进行二进制AND运算,因此您将删除整数中的所有其余位。

答案 1 :(得分:9)

如果你需要概括超过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');

答案 2 :(得分:6)

相关问题: How do you set, clear, and toggle a single bit?是对c和c ++中单位访问的扩展讨论。

答案 3 :(得分:3)

打印n:

的第m位(m,从1..16或32开始)
void print_bit(n, m)
{
    printf("%d", n & (1 << (m - 1)));
}

如果位计数器从0开始,则删除- 1位。

答案 4 :(得分:1)

C ++答案比C89答案容易,使用原生bool类型:

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

C99非常相似:

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

答案 5 :(得分:1)

您可以使用“union”:

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

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