php中的二进制,为什么是63位?

php中的二进制,为什么是63位?,php,binary,Php,Binary,我正在使用的系统和PHP版本: 操作系统:Centos 7 x86_64 PHP:PHP7.2 网址: 代码: 问题是: 最小值的二进制数是64 最大的二进制数是63,为什么? 谢谢您的回答。因为$b中最左边的位是0,无法打印 尝试打印decbin($a)(因为$a是8)以查看它不会打印为64位,而只打印为4位 如果要显示最左边的0,请使用sprintf格式化字符串,如中所示 echo "The binary of \$b: " . sprintf("%064b", decbin($b)

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

  • 操作系统:Centos 7 x86_64
  • PHP:PHP7.2
网址:

代码:

问题是:

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

谢谢您的回答。

因为
$b
中最左边的位是0,无法打印

尝试打印
decbin($a)
(因为
$a
是8)以查看它不会打印为64位,而只打印为4位

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

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

将格式字符串中的
64
替换为要显示的位数。

因为
$b
中最左边的位是0,并且不会被打印出来

尝试打印
decbin($a)
(因为
$a
是8)以查看它不会打印为64位,而只打印为4位

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

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

将格式字符串中的
64
替换为您希望显示的位数。

还有一个0,因为2是补码表示。
二进制$a:1000
。我理解。谢谢你的帮助。还有一个0,因为2的补码表示。
二进制的$a:1000
。我理解。谢谢你的帮助。
echo "The binary of \$b: " . sprintf("%064b", decbin($b)) . "\n";