Gray Code

来源:互联网 发布:穆勒plc手动编程方法 编辑:程序博客网 时间:2024/05/22 13:56

下表为几种自然二进制码与格雷码的对照表:

十进制数自然二进制数格雷码000000000100010001200100011300110010401000110501010111601100101701110100810001100910011101101010111111101111101211001010131101101114111010011511111000

一般的,普通二进制码与格雷码可以按以下方法互相转换:

二进制码->格雷码(编码):从最右边一位起,依次将每一位与左边一位异或(XOR),作为对应格雷码该位的值,最左边一位不变(相当于左边是0);

格雷码-〉二进制码(解码):从左边第二位起,将每位与左边一位解码后的值异或,作为该位解码后的值(最左边一位依然不变)。


public class Solution {    public List<Integer> grayCode(int n) {        int max = 1<<n;        List<Integer> list = new ArrayList<Integer>();        for(int i = 0; i < max; i++){            list.add((i>>1)^i);        }        return list;    }}


0 0