TAOCP V4.F2 格雷码(1)
1、预备知识:关于异或

第四卷的第一册是关于布尔代数的,不过还未出版。而作者在描述格雷码的时候,异或
出现的次数很频繁,先了解一点异或的性质有好处。

性质:
1、a
b=b
a


2、(a
b)
c=a
(b
c)




3、a
b
c
a=b
c




4、a
0=a

5、a
1:将a的二进制表示的最后1位取补

6、a
(
-1):将a的二进制表示的后n位按位取补


2、知识浏览
1、格雷码的形式定义:


其中:
表示空串,R表示反序,即reverse order。

2、令g(k)表示二进制格雷码k的对应数值,那么,若k=
+r (r<
),则:


g(k)=
+g(
-1-r)


3、若k=(
)B,g(k)=(
)B,那么:


aj=bj
bj+1 0<=j<=n-1 (7)

证明:用数学归纳法,对k进行归纳。
1):k=1时,显然成立。
2):假设k<T时,命题均成立。
3):当k=T时,若T=(1
)B,即:T=2n+(
)B,于是,有:


g(T)=
+g(
-1-(
)B)



也就是:g(T)=
+g( (11...1)B - (
)B )


(11...1)B - (
)B,就是将
按位取补,因此,上式等价于:


g(T)=
+g( (
-1)
(
)B )




=2n+g( (
)B ) 其中
=bj
1



而g( (
)B )

= g( (bn-1
1)(bn-1
1
bn-2
1)...(b1
1
b0
1) )







=g( (bn-1
1)(bn-1
bn-2)...(b1
b0) )



故:g(T)=
+g( (
-1)
(
)B )




=g( 1(bn-1
1)(bn-1
bn-2)...(b1
b0) )



因此,当k=T时,命题也成立。
综上,命题成立!
4、由g(k)得到k的反转公式:

证明:
由(7)有:aj=bj
bj+1

因此: aj+1=bj+1
bj+2

...
an-2=bn-2
bn-1

an-1=bn-1
0

将以上的式子依次异或,得到:
aj
aj+1
...an-2
an-1=bj
bj+1
bj+1
bj+2...
bn-2
bn-1
bn-1
0










也就是:
bj
0=aj
aj+1
...an-2
an-1




即:
bj=aj
aj+1
...an-2
an-1



5、由异或运算
的结合律,就可以得到


6、证明:

证明:
因为 g(
+r)=
+g(
-1-r)



而:
-1-r=r
(2n-1)


因此,g(
-1-r)=g( r
(2n-1) )


又由(11)得:
g(
-1-r)=g(r)
g(2n-1)


而,g(2n-1)=100...0
故g(
-1-r)=g(r)
100...0


由对应关系,知道:
g(
-1-r)对应于 


因此:
