Бинарный файл в php, почему 63 бита? - PullRequest
0 голосов
/ 28 ноября 2018

Используемая версия системы и 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 голосов
/ 28 ноября 2018

Поскольку самый левый бит в $b равен 0, и он не печатается.

Попробуйте напечатать decbin($a) (поскольку $a равно 8), чтобы убедиться, что он не будет печататься как64 бита, всего 4.

Если вы хотите показать крайние левые 0, используйте sprintf для форматирования строки, как в

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

Замените 64 в строке формата ссколько бит вы хотите показать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...