Как использовать 64 бит в PHP

Я написал функцию, которая выведет последовательность серых кодов. Для ввода 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

0 ответов

Другие вопросы по тегам