Gray Code的性质:相邻连续的两个二进制串,有且只有一位不同。
Gray Code与二进制码的转换
将连续的十进制数转化为对应的Gray Code,规律是:Gray Code=i^(i>>1),i是十进制数对应的二进制码
例如:2位Gray Code码与二进制码的对应关系如下:
十进制 二进制码 格雷码
0 00 00
1 01 01
2 10 11
3 11 10
public ArrayList<Integer> grayCode(int n) {
int size =1;
for(int i =0;i<n;i++){
size = size * 2;
}
ArrayList<Integer> lists = new ArrayList<Integer>();
for(int i =0;i<size;i++){
lists.add(i^(i>>1));
}
return lists;
}