PHP中的二进制文件,为什么是63位?

时间:2018-11-28 09:22:18

标签: php binary

我正在使用的系统和PHP版本:

  • 操作系统:Centos 7 x86_64
  • PHP:PHP 7.2

url:http://php.net/manual/en/function.decbin.php

代码:

<?php

$a = PHP_INT_SIZE;
$b = PHP_INT_MAX;
$c = PHP_INT_MIN;

echo "The value of \$a: ", $a . "\n";
echo "The value of \$b: ", $b . "\n";
echo "The value of \$c: ", $c . "\n\n";

echo "The binary of \$b: " . decbin($b) . "\n";
echo "The binary of \$c: " . decbin($c) . "\n";

输出:

The value of $a: 8
The value of $b: 9223372036854775807
The value of $c: -9223372036854775808

The binary of $b: 111111111111111111111111111111111111111111111111111111111111111
The binary of $c: 1000000000000000000000000000000000000000000000000000000000000000

问题:

  • 最小值的二进制数是64
  • 最大二进制数是63,为什么?

谢谢您的回答。

1 个答案:

答案 0 :(得分:3)

因为$b中最左边的位是0,所以它不会被打印。

尝试打印decbin($a)(由于$a为8),以确保它不会打印为64位,而只是4位。

如果要显示最左边的0,请使用sprintf设置字符串格式,如

echo "The binary of \$b: " . sprintf("%064b", decbin($b)) . "\n";

用格式字符串替换64,并用要显示的位数来表示。