猿问

关于PHP二进制位长度的问题

系统和PHP版本

  • 系统:Centos 64位
  • PHP 7.2

网址:http://php.net/manual/en/func...

PHP代码:

<?php

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

    echo "\$a的值:", $a . "\n";
    echo "\$b的值:", $b . "\n";
    echo "\$c的值:", $c . "\n\n";

    echo "\$b的二进制:" . decbin($b) . "\n";
    echo "\$c的二进制:" . decbin($c) . "\n";

输出结果:

$a的值:8
$b的值:9223372036854775807
$c的值:-9223372036854775808

$b的二进制:111111111111111111111111111111111111111111111111111111111111111
$c的二进制:1000000000000000000000000000000000000000000000000000000000000000

问题描述:

  • 64位系统下,整数的最大值为:9223372036854775807,最小值为:-9223372036854775808,
  • 最小值的二进制为64位,最高位的1表示为负数。
  • 为什么最大值的二进制是63位?难道省略了最前面的0?

感谢大神解答ヾ(o◕∀◕)ノヾ

小唯快跑啊
浏览 730回答 1
1回答

宝慕林4294392

整数的最大值实际为64位,即:09223372036854775807,省略了最前面的0
随时随地看视频慕课网APP
我要回答