为什么使用0xffff超过 65535

php
2022-08-30 20:19:47

我见过一些PHP脚本,它在中使用0xffff。我做,结果到65535。使用这个0xffff有什么意义吗?那是什么?mt_rand(0, 0xffff)echo 0xffff;


答案 1

十六进制表示法清楚地表明,数字中的所有位都是 。这是相同的数字,但二进制表示并不那么明显。这只是一个计数数字。所以这种写数字的方式有不同的语义。0xffff165535

例如,如果要声明某个变量的最大值必须为 65535,则最好这样声明:

$max_value = 65535;

因为这样,人类可以很容易地将其与其他值(如65500()或66000())进行比较。< $max_value> $max_value

相反,对于位字段。

$default_state = 65535;

这并没有告诉我所有的位都是一个(事实上它们是一个)。

$default_state = 0xFFFF;

这样做:每个十六进制数字代表四位,一个表示四个1位。因此是二进制的。F0xFFFF0b1111111111111111

当程序员想要清楚地表明二进制表示法很重要,可能比精确的数值更重要时,将使用十六进制表示法。


答案 2

如果你的代码正在执行二进制操作,那么与十进制相比,在上下文中使用这样的十六进制值更容易理解;尽管我不认为mt_rand是这些上下文之一(特别是因为下限是十进制的,并且在您的示例中只有上限是十六进制的)


推荐