Рассмотрим:Неожиданный результат операции побитовое
php > $a = 12; // 1100
php > echo ~$a;
-13
Я бы ожидать, что обратная 1100
быть либо 0011
(прямой) или 11110011
(весь байт). Это даст результат либо 3
, либо 243
. Откуда приходит -13
?
Опять же, для хорошей меры, еще один неожиданный результат того же типа и объяснения:
php > $b = 6; // 0110
php > echo ~$b;
-7
Почему -7
?
Почему вы щадящие из минус в показанных результатах?Целые числа в PHP не просто занимают байты, а обычно 32 или 64-битное слово и подписываются. – mario
Я даже не заметил знаки минуса! Я на самом деле копирую это из более чем идеальной среды. Благодарю. – dotancohen
http://en.wikipedia.org/wiki/Two%27s_complement – devnull