Я столкнулся с проблемой при преобразовании некоторого кода C в PHP, особенно при использовании оператора правого сдвига.
edit: в следующих примерах, бит = 0;
Оригинальный код C:
p->param->outBits[bytePtr++] |= codeword >> (9 + bit);
PHP код:
$outBits[$bytePtr++] |= $codeword >> (9 + $bit);
Если я начну с codeword
, равным 130728, в C я получу ожидаемый результат -1. В PHP я получаю 255. Я понимаю, что это как-то связано с различием арифметического / логического сдвига, и отрицательный знак не вводится в результате того, что MSB остаются на нуле.
Есть ли "быстрый" способ сделать вышеперечисленное в PHP, который не включает сдвиг? например, с помощью базовой арифметики или подобного, что даст мне ожидаемый ответ?