原文链接: Python 格雷码
上一篇: Python 爬取数电教案并保存为pdf
下一篇: atom Python 代码运行插件 scripts
格雷码,又叫循环二进制码或反射二进制码,格雷码是我们在工程中常会遇到的一种编码方式,它的基本的特点就是任意两个相邻的代码只有一位二进制数不同
for i in range(16):
print(i, str(bin(i))[2:].zfill(4), str(bin(i ^ (i >> 1)))[2:].zfill(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
-
格雷码属于 可靠性编码 ,是一种错误最小化的 编码方式 。因为,虽然自然二进制码可以直接由数/模转换器转换成 模拟信号 ,但在某些情况,例如从十进制的3转换为4时二进制码的每一位都要变,能使数字电路产生很大的尖峰电流脉冲。而格雷码则没有这一缺点,它在相邻位间转换时,只有一位产生变化。它大大地减少了由一个状态到下一个状态时逻辑的混淆。由于这种编码相邻的两个码组之间只有一位不同,因而在用于方向的转角位移量-数字量的转换中,当方向的转角位移量发生微小变化(而可能引起数字量发生变化时,格雷码仅改变一位,这样与其它编码同时改变两位或多位的情况相比更为可靠,即可减少出错的可能性。
-
格雷码是一种 绝对 编码方式 ,典型格雷码是一种具有反射特性和循环特性的单步自补码,它的循环、单步特性消除了随机取数时出现重大误差的可能,它的反射、自补特性使得求反非常方便。
-
由于格雷码是一种 变权码 ,每一位码没有固定的大小,很难直接进行比较大小和算术运算,也不能直接转换成液位信号,要经过一次码变换,变成自然二进制码,再由 上位机 读取。 [3]
-
典型格雷码是一种采用 绝对编码方式的准权码 ,其权的绝对值为2^i-1(设最低位i=1)。
-
格雷码的十进制数奇偶性与其码字中1的个数的奇偶性相同。