Серый код в двоичное преобразование - PullRequest
2 голосов
/ 27 февраля 2011

Если для числа задан серый код, найдите двоичный код для числа.

Код Грея - это двоичная система счисления, в которой два последовательных значения отличаются только одним битом.

Например, двухбитный серый код: 0 - 00 1 - 01 2 - 11 3 - 10

Двоичный код:

0 - 00 1 - 01 2 - 10 3 - 11

Укажите алгоритм для преобразования серого кода числа в двоичный код.

Например, ввод равен 11. Ожидаемый вывод равен 10.

Ответы [ 3 ]

2 голосов
/ 27 февраля 2011

Преобразование кода Грея в двоичный код:

Сохраните старший значащий бит в том виде, в каком он есть, а для остальных бит сохраняйте в порядке следования последовательные биты.

т.е. Gn Gn-1 Gn-2 ........ G1 - серый код, а Bn Bn-1 ....... B1 - двоичный код.

Bn = Gn и для всех остальных битов Bn-1 = Gn-1 XOR Gn

0 голосов
/ 25 ноября 2017
<?php

function gry_code ($ n) {

if($n == 0 || $n > 65 ) {

    return "Invalid input please input between 1 to 65";
    exit;

} 

$arr = array();

array_push($arr,"0","1");

$i = 0;
$j = 0;

 for ($i = 2; $i < (1<<$n); $i = $i<<1)
 {
    //duplicate the arr contents in reverse order
    for ($j = $i-1 ; $j >= 0 ; $j--)

    array_push($arr,$arr[$j]);

    // append 0 to the first half
    for ($j = 0 ; $j < $i ; $j++)
        $arr[$j] = "0".$arr[$j];

    // append 1 to the second half
    for ($j = $i ; $j < 2*$i ; $j++)
        $arr[$j] = "1".$arr[$j];
}
//return $arr;
$arr = array_slice($arr, -$n);
foreach($arr as $key => $arrx) {

    echo $arrx."\n";


}

//return $arr;

}

print_r (gry_code (5));

?>

0 голосов
/ 15 ноября 2016

Если вы хотите простой способ, есть хороший онлайн-конвертер серого кода, который вы можете использовать:

...