我遇到了一個問題,同時將一些C代碼轉換爲PHP,特別是使用右移運算符。PHP右移和負面結果?
編輯:在下面的例子中,位= 0;
原始的C代碼:
p->param->outBits[bytePtr++] |= codeword >> (9 + bit);
PHP代碼:
$outBits[$bytePtr++] |= $codeword >> (9 + $bit);
如果我開始codeword
爲130728,在C我得到的-1預期的結果。在PHP中,我得到了255.我知道這是與算術/邏輯移位差異有關的,並且由於MSB保持爲零而不會引入負號。
有沒有一種「快速」的方式在PHP中做到上述不涉及轉移?例如通過基本算術或類似算法,這會給我預期的答案?
@stereofrog,剛剛意識到'outBits'內存是一個char的負載,因此8位,因此在結果上的差異 - 感謝指向我寫一個快速測試案例! :-) – richsage 2009-11-15 13:30:26