一連のグレイコードを出力する関数を書きました。N の入力の場合、N ビットの最後の N 個のグレイ コード番号を示します。
現在、この関数は、入力がオーバーした場合に正しい出力を提供していません31
。しかし、少なくとも64
. どうすればこれを達成できますか?
関数は次のとおりです。
function gray_encode($binary) {
$powered = pow(2, $binary) - 1;
for ( $i = ($powered - $binary)+1; $i < ($powered+1); $i++) {
echo decbin($i ^ ($i >> 1)) . PHP_EOL;
}
}
gray_encode(31);
31 の右出力: http://codepad.org/8LotGD35
33 の間違った出力: http://codepad.org/JmfIOrrj
1-31 の全出力: http://codepad.viper-7.com/aDPx68