7

のように少し印刷する方法を教えてくださいprintf("%d",bit);

4

6 に答える 6

20

bit が必要な値を最下位ビットに含む単なる int である場合、次のようになります。

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

するべきです。& は、最初の有効ビットのみが設定された数値でバイナリ AND を実行しているため、整数の残りのビットをすべて削除しています。

于 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

関連する質問:1 つのビットをどのように設定、クリア、トグルしますか? c および c++ でのシングル ビット アクセスの詳細な説明です。

于 2008-12-08T16:17:42.150 に答える
3

n の m 番目のビット (1..16 または 32 の m) を出力するには:

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

- 1ビット カウンターが 0 から始まる場合は、ビットを削除します。

于 2008-12-08T16:00:29.033 に答える
1

C++ の回答は、C89 の回答よりも簡単で、ネイティブの bool 型を使用します。

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

C99 は非常に似ています。

_Bool b = 1;
printf("%d", b);
于 2008-12-09T10:10:16.790 に答える
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 に答える