19

で0xffffを使用する PHP スクリプトを見たことがありますmt_rand(0, 0xffff)。私はそうしecho 0xffff;、結果は65535になります。この0xffffを使用する意味はありますか? また、それは何ですか?

4

4 に答える 4

44

16 進数表記0xffffにより、数値のすべてのビットが1. は65535同じ数値ですが、2 進数表現はそれほど明白ではありません。カウント数だけです。したがって、この数字の書き方には異なるセマンティクスがあります。

たとえば、ある変数の最大値が 65535 でなければならないことを宣言したい場合は、次のように記述するのが最善です。

$max_value = 65535;

< $max_valueこれにより、人間が 65500 ( ) や 66000 ( ) などの他の値と比較しやすくなるから> $max_valueです。

逆にビットフィールドの場合。

$default_state = 65535;

これは、すべてのビットが 1 であることを示しているわけではありません (実際にはビットが 1 である場合)。

$default_state = 0xFFFF;

各 16 進数は 4 ビットを表し、aFは 4 つの 1 ビットを意味します。したがって、バイナリです0xFFFF0b1111111111111111

16 進数表記は、プログラマーが 2 進数表現が重要であり、正確な数値よりも重要であることを明確にしたい場合に使用されます。

于 2012-10-30T10:38:58.677 に答える
7

コードがバイナリ操作を行っている場合、このような 16 進数値を使用すると、10 進数に比べてコンテキストで理解しやすくなります。mt_rand をこれらのコンテキストの 1 つとは見なしませんが (特に、下限は 10 進数であり、例では 16 進数の上限のみであるため)

于 2012-10-30T10:35:46.837 に答える
6

65535 の 16 進数表記です。提供されたコンテキストでは 2 つの間に重要な違いはありませんが、65535 よりも「0、x、および 4 つの f 文字」を覚えやすいです。

于 2012-10-30T10:35:15.940 に答える