• 格雷码证明


    格雷码证明

    x为原来的数,y为格雷码,两者都用二进制表示

    y=x xor (x shr 1)

    可认为y(k)=x(k) xor x(k+1),其中y(k)为y的从低到高第k位,x(k)为x的从低到高第k位。设二进制位数为n,注意x(n+1)=0。

    1.所有二进制对应的格雷码都不相同

    x->y    y(k)=x(k) xor x(k+1)

    p->q    q(k)=p(k) xor p(k+1)

    若y=q,则:y(n)=q(n),求得x(n)=y(n);y(n-1)=q(n-1),求得x(n-1)=y(n-1);依次类推,x(1)=y(1),所以x=p。得证。

    2.二进制下相邻的两个数对应的格雷码有且只有一位不相同,其它位都相同

    二进制下相邻的两个数为x和s,其中x=s+1。而y=x xor (x shr 1), t=s xor (s shr 1),

    要证明y和t有且只有一位不相同,其它位都相同

    I.x的最后一位为1

    x

    a[n]

    a[n-1]

    ……

    a[1]

    1

    x shr 1

     

    a[n]

     

    a[2]

    a[1]

    y

     

     

     

     

    Diff

    s

    a[n]

    a[n-1]

    ……

    a[1]

    0

    s shr 1

     

    a[n]

    ……

    a[2]

    a[1]

    t

     

     

     

     

    Diff

    II.x的最后一位为0

    x

    a[n]

    a[n-1]

    ……

    a[k+1]

    1

    0

    0

    ……

    0

    0

    x shr 1

     

    a[n]

    ……

    a[k+2]

    a[k+1]

    1

    0

    ……

    0

    0

    y

     

     

     

     

    Diff

     

     

     

     

     

    s

    a[n]

    a[n-1]

    ……

    a[k+1]

    0

    1

    1

    ……

    1

    1

    s shr 1

     

    a[n]

    ……

    a[k+2]

    a[k+1]

    0

    1

    ……

    1

    1

    t

     

     

     

     

    Diff

     

     

     

     

     

    所以得证。

    3.

    二进制->格雷码:y(i)=x(i) xor x(i+1)   [x(n+1)=0]  (规定)

    格雷码->二进制:x(i)=x(i+1) xor y(i)

    证明 格雷码->二进制:x(i)=x(i+1) xor y(i) 的正确性:

    x(i)=x(i+1) xor y(i)=x(i+1) xor x(i) xor x(i+1)=x(i)

    得证。

  • 相关阅读:
    解析url
    初学react
    移动端判断用户滑动方向
    冒泡排序、快速排序、数组去重
    Angular Material主题配置
    reset()方法的使用、jq下面reset()的正确使用方法
    conts、var 、let的区别
    NLP
    mybatis的执行流程
    PHP递归算法示例:打印无限级数组元素的值
  • 原文地址:https://www.cnblogs.com/cmyg/p/6565627.html
Copyright © 2020-2023  润新知