1

一連のグレイコードを出力する関数を書きました。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

4

0 に答える 0