整数処理機構の修​​正


1. 無効な 8 進数はコンパイル エラーを報告します

無効な 8 進数 (7 より大きい数値を含む) はコンパイル エラーを報告します。たとえば、次のコードはエラーを報告します:

$i = 0781; // 8 is not a valid octal digit!

古いバージョンの PHP は無効な数値を無視します。

2. 負の変位位置は例外を生成します

 var_dump(1 >> -1);
 // ArithmeticError: Bit shift by negative number

3. 左変位が桁数を超える場合は、0

var_dump(1 << 64); // int(0)

古いバージョンのPHP の実行結果と CPU アーキテクチャが重要です。たとえば、x86 は 1 を返します。

4. 右の変位を超える場合は、0 または -1 が返されます。

var_dump(1 >> 64);  // int(0)
var_dump(-1 >> 64); // int(-1)