Cの変数のバイト/ビットはどうやって見ることができますか?バイナリの点では、ちょうど0と1です。Cの変数のバイト/ビットを見てください
私の問題は、変数xの最上位バイトにゼロが存在するかどうかをテストすることです。どんな助けもありがとう。
Cの変数のバイト/ビットはどうやって見ることができますか?バイナリの点では、ちょうど0と1です。Cの変数のバイト/ビットを見てください
私の問題は、変数xの最上位バイトにゼロが存在するかどうかをテストすることです。どんな助けもありがとう。
論理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))) ...
印刷sizeof(x)
から0
から、すなわちバイトによるメモリバイト、(x
はあなたの変数であることを起こる場合)。次に、各バイトを印刷するときは、8ビットすべてを個別に印刷します。あなたはビットNは、VARに設定されているかどうかを確認するには、次の試験に
VAR &(1 < < N)
を使用することができます
if(x & 0x80) // assuming x is a byte(char type)
{
// msb is set
}
。最上位ビットはvarのデータ型に依存します。
sizeof(int)== 4 MSBの場合、0XFF << 3はどのようにテストされますか? – keety
@keetyええ、良いキャッチ – littleadv