为什么使用0xffff超过65535

时间:2012-10-30 10:33:41

标签: php

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

4 个答案:

答案 0 :(得分:25)

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

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

$max_value = 65535;

因为这样可以让人们轻松将其与65500(< $max_value)或66000(> $max_value)等其他值进行比较。

相反,位字段。

$default_state = 65535;

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

$default_state = 0xFFFF;

这样做:每个十六进制数字代表4位,F表示4个1位。因此,0xFFFF为二进制0b1111111111111111

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

答案 1 :(得分:7)

如果您的代码正在进行二进制操作,那么使用这样的十六进制值在上下文中比十进制更容易理解;虽然我不认为mt_rand是其中一个上下文(特别是因为下限是十进制的,它只是你示例中的十六进制上限)

答案 2 :(得分:6)

它只是65535的十六进制表示法。在您提供的上下文中,两者之间没有重要区别,但它更容易记住&#34; 0,x和四个f字符&# 34;比65535。

答案 3 :(得分:0)

0xffff 是一个十六进制数字。 0x 仅告诉您 0x 之后的值是十六进制。十六进制从 0到9 和从 a到f 16位

要计算十六进制数字的十进制值,您必须将数字值乘以16乘以该数字在数字中所占的幂。

示例:

ffff = (15*16^3) + (15*16^2) + (15*16^1) + (15*16^0) = 65535

f的值为15,它是数字的0 1 2和3的位置。

34a6 = (3*16^3) + (4*16^2) + (10*16^1) + (6*16^0) = 13478

希望有帮助