格雷编码(转换与计算)附代码

发布时间:2023年12月23日

目录

格雷码对应表

格雷码转换公式

公式1

公式2

代码实现


格雷码对应表

十进制数

4位自然二进制码

4位典型格雷码

0

0000

0000

1

0001

0001

2

0010

0011

3

0011

0010

4

0100

0110

5

0101

0111

6

0110

0101

7

0111

0100

8

1000

1100

9

1001

1101

10

1010

1111

11

1011

1110

12

1100

1010

13

1101

1011

14

1110

1001

15

1111

1000


格雷码转换公式

公式1

G_{i}=B_{i}\bigoplus B_{i+1} (0\leqslant i\leqslant n-1)?

Bi+1=n时,当作0

公式2

G_i=i\bigoplus\lfloor \frac{i}{2}\rfloor

这里的?i?都是二进制表示形式

比如5的格雷码是?101\bigoplus 010?=111


代码实现

class Solution {
public:
    vector<int> grayCode(int n) {
        vector<int>ret(1<<n);
        for(int i=0;i<ret.size();i++){
            ret[i]=i^(i>>1);
        }
        return ret;
    }
};

文章来源:https://blog.csdn.net/weixin_60401853/article/details/135173002
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。