Отрицание Hex в PHP, забавное поведение.

Странное поведение. Мне было интересно, может ли кто-нибудь прояснить ситуацию для меня.

Проверьте это

$hex = 0x80008000;

print_r(decbin(intval($hex)) . '<br/>');
print_r(decbin($hex));

Выходы

10000000000000001000000000000000
10000000000000001000000000000000

Как и ожидалось.

Но

$hex = 0x80008000;

print_r(decbin(~intval($hex)) . '<br/>');
print_r(decbin(~$hex));

Выводы

1111111111111110111111111111111
1111111111111111111111111111111

Почему средний бит не переключается, когда $hexинвертируется?

9
задан Vigrond 8 March 2012 в 20:02
поделиться