Потихоньку готовлюсь к ZEND 7.1 экзамену. Вот вопрос:
Напишите результат выполнения данного кода
<?php
$x = 7;
echo ~$x;
Ответ: -8
Почему?
Поиск по документации привел меня к побитовой инверсии, когда ~ делает например из 00010 строку 11101
Но как это связано с X = 7 и почему в результате получается -8?
Ниже дан хороший ответ про перевод 0111 (7 в двоичной системе) в 1000 (8 в двоичной системе), однако ответ не 8, а -8. Почему меняется знак? И почему ответ возвращается в виде числа 10-тичной системы (-8), а не 1000 (-1000) ?
7 в двоичной системе 0111
~ $a Отрицание Устанавливаются те биты, которые не установлены в $a, и наоборот.
0111 -> превращается в 1000 -> 8