2012-04-25 8 views
3

私はIMは何の略か知っていますが、私は0x1が何の略か知ることにintrestedています#defineで0x1を使用する意味は何ですか?

#define IM 0x1 

以下のようなものを持っていたコードの行に出くわしたと何の使用のためのその使用とその意義があります定義文の中で。

私はC言語を新しくしましたが、この特定のアイテムを検索しましたが見つかりませんでした。すべてのあなたの助けを前もってありがとう。

+0

おそらく、著者は、Sasquihaが例示したように、0x1を他の変数の暗黙の標準に準拠させるために使用しました。 – Spidey

答えて

6

これはバイナリフラグを行う場合、通常、このように定義し、進数1です。したがって、あなたは設定しているビットを見ることができるので、

0x1 
0x2 
0x4 
0x8 
0x10 

が表示されます。

+1

私は1 << nに行くだろう、それははるかに明確で定数です、コンパイラはとにかく最適化されます。 – Spidey

+2

@ Spidey私は、この場合のようにビットマスキングの目的でプレーンヘックスが不明であるとは思わない。コードを読む人が16進数を理解できない場合は、コンピュータから離れてコードをプログラマに渡すほうがよいでしょう。 – Lundin

9

数字は16進数(16進数)で定義されています。これはおそらくコード内のマジックナンバーを避けるために使われます。マジックナンバーとは、プログラマーが説明のないコードで直接番号を使用する場合です。例えば

int x = 32; 
x -= 8; 

このコードは一緒にほとんど意味がありますが、私はこれを行う場合

#define TOTAL_BITS 32 
#define BITS_PER_BYTE 8 

int x = TOTAL_BITS; 
x -= BITS_PER_BYTE; 

コードがはるかに明確です。いずれにせよ、マクロ(すなわち、#define)は、その内容をコード内のどこに置き換えます。したがって、式などを使用する場合は、括弧で囲むことをお勧めします。

3
#define IM 0x1 

これは、他の位置の数字システムです:16進数です。ここでは、数字「1」の16進数形式です。

関連する問題