首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >格雷码到二进制的转换

格雷码到二进制的转换
EN

Stack Overflow用户
提问于 2011-02-27 12:33:37
回答 3查看 4.9K关注 0票数 2

给定一个数字的格雷码,找到该数字的二进制代码。

格雷码是一种二进制数字系统,其中两个连续的值只有一位不同。

例如,两位格雷码为:0- 00 1- 01 2- 11 3- 10

二进制是:

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

提供了一种将数字的格雷码转换为二进制码的算法。

例如,输入为11,预期输出为10。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-02-27 12:36:39

将格雷码转换为二进制代码为:

保留最高有效位,其余位继续对连续位进行异或运算。

ie Gn-1 Gn-2 ........G1是格雷码,Bn Bn-1 .......B1是二进制码。

对所有其他位进行Bn= Gn和Bn-1 = Gn-1异或Gn

票数 2
EN

Stack Overflow用户

发布于 2016-11-15 18:03:03

如果你想要一个简单的方法,有一个很好的在线格雷码转换器可以使用:http://www.convertforfree.com/gray-code-converter/

票数 0
EN

Stack Overflow用户

发布于 2017-11-25 14:21:51

代码语言:javascript
复制
<?php

函数gry_code($n) {

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5131476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档