побитовые операторы — биты отрицания не работают, как ожидалось, переполнение стека

Вот моя проблема:

<?php
$a = ~5; //0101 => 1010
echo $a;//-6

Поскольку оператор Negate конвертирует единицы в нули и нули в единицы, результат должен быть как минимум 10. Почему я получил -6 в качестве результата?

0

Решение

Потому что php использует 2-дополнение и относится к вашему новому $a как целое число со знаком.

Увидеть: http://en.wikipedia.org/wiki/Two%27s_complement

1

Другие решения

Других решений пока нет …