首页 > 其他 > 详细

格雷码

时间:2020-09-27 23:32:23      阅读:41      评论:0      收藏:0      [点我收藏+]

格雷码是任意两个相邻数的代码只有一位二进制数不同的编码。
例如以下为三位元的格雷码:000 001 011 010 110 111 101 100。

正反向公式:
\(G(n) = n \oplus (n >> 1)\)
\(n = G(n) \oplus (G(n) >> 1) \oplus ... \oplus 1\)
由异或运算的自反性可以从正向证明到反向。

int g(int n) {
    return n ^ (n >> 1);
} 
 
int rev_g(int g) {
    int n = 0;
    for(; g; g >>= 1) n ^= g;
    return n;
}

格雷码

原文:https://www.cnblogs.com/sakyo/p/13742165.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!