2009-11-14 166 views
6

多くの人が16進数0x0001を使用し、他の人は0x00000001を使用する人がいることがわかります。私は誤解していない場合、これらは両方とも小数1の等価のように見えます。16進数0x0001対0x00000001

なぜどちらか一方を優先して使用するのはなぜですか?

+5

10進数を示す言語に応じて、10進数に先行ゼロを使用しないでください。 '0053'は' 53'と同じ数である必要はありません。 –

答えて

12

これがC、C++、Java、C#などと仮定すると、それらは同じです。 0x0001は16ビット値を意味し、0x00000001は32ビット値を意味するが、実際のワード長はこれらのような16進リテラルを評価するコンパイル時にコンパイラによって決定される。これはコーディングスタイルの問題ですが、コンパイルされたコードには何の違いもありません。

+0

+1 - 私にそれを打つ – ChrisF

3

ここでは、ビットマスクの幅に先行ゼロを配置する伝統があります。私はさらに、特殊な権限を追加するために、ある時点で変更されたビットマスクの幅を推測します。