2012-04-02 5 views
1

Cの変数のバイト/ビットはどうやって見ることができますか?バイナリの点では、ちょうど0と1です。Cの変数のバイト/ビットを見てください

私の問題は、変数xの最上位バイトにゼロが存在するかどうかをテストすることです。どんな助けもありがとう。

答えて

3

論理AND演算子&を使用してください。たとえば:

char c = .... 
if ((c & 0xFF) == 0xFF) ... // test char c for zeroes 

あなたは、異なるタイプのためにあなたがMSBをテストするために、異なる値が必要になりますので、代わりに数値定数を使用するのでは、それを自動化するためにシフトし、マクロを使用することをお勧めします。 sizeofを使ってシフトの値を得ることができます。

// test MSB of an int for zeroes 
int i = ... 
if ((i & (0xFF << 8*(sizeof(int)-1))) == (0xFF<<8*(sizeof(int)-1))) ... 
+0

sizeof(int)== 4 MSBの場合、0XFF << 3はどのようにテストされますか? – keety

+0

@keetyええ、良いキャッチ – littleadv

0

印刷sizeof(x)から0から、すなわちバイトによるメモリバイト、(xはあなたの変数であることを起こる場合)。次に、各バイトを印刷するときは、8ビットすべてを個別に印刷します。あなたはビットNは、VARに設定されているかどうかを確認するには、次の試験に

VAR &(1 < < N)

を使用することができます

0
if(x & 0x80) // assuming x is a byte(char type) 
{ 
    // msb is set 
} 
1

。最上位ビットはvarのデータ型に依存します。

関連する問題