python生成格雷码

来源:互联网 发布:淘宝在哪里查看扣分 编辑:程序博客网 时间:2024/06/09 13:50

python生成格雷码

格雷码

格雷码(Gray code)为数字电路中经常用到的编码。

格雷码与二进制的相互转换


  • 转换的算法请参考:

http://wenku.baidu.com/view/1a2eb520bcd126fff7050ba6.html

用于生成格雷码的Python程序

以下为生成格雷码的python代码:

#!/usr/bin/env python3#=============================================================================#     FileName: bin2gray2bin.py#         Desc: This is python function to convert between Binary Code & Gray Code #       Author: Kechang.Shao#        Email: shao.kc@163.com#     HomePage: #      Version: 0.0.1#   LastChange: 2016-02-18 07:25:00#      History:#=============================================================================import string################################################Covert gray code to binary code###########################################################def gray2bin(gray_code_origin,bit_wise = 8):    if len(gray_code_origin) < bit_wise:        gray_code = str(0) * (bit_wise-len(gray_code_origin)) + gray_code_origin    elif len(gray_code_origin) > bit_wise:        gray_code = gray_code_origin[-bit_wise:]    else:        gray_code = gray_code_origin    gray_code_reverse = gray_code    length_gray_code_reverse = len(gray_code_reverse)    bin_list = []    bin_list.append(str(int(gray_code_reverse[0])))    j = 1    while j < length_gray_code_reverse:        bin_list.append(str(int(gray_code_reverse[j]) ^ int(bin_list[j-1]) ) )        j = j + 1;    bin_code = "".join(bin_list)#    print (str(gray_code) + "<---->" + str(bin_code))    return str(bin_code)################################################Covert binary code to gray code###########################################################def bin2gray(binary_code_origin,bit_wise = 8):    if len(binary_code_origin) < bit_wise:        binary_code = str(0) * (bit_wise-len(binary_code_origin)) + binary_code_origin    elif len(binary_code_origin) > bit_wise:        binary_code = binary_code_origin[-bit_wise:]    else:        binary_code = binary_code_origin    binary_code_reverse = binary_code[::-1]    j = 0    gray_list = []    length_binary_code_reverse = len(binary_code_reverse)    while j < length_binary_code_reverse - 1:        gray_list.append( str(int(binary_code_reverse[j]) ^ int(binary_code_reverse[j+1]) ) )        j = j + 1;    gray_list.append(str(int(binary_code_reverse[j])))    gray_code = "".join(gray_list)[::-1]    print (str(binary_code) + "," + str(gray_code))    return gray_code################################################Main Entry################################################################################def main():    bit_wise = 8    for i in range(0,2 ** bit_wise):#        print ("-------------------------------------------")        binary_code_origin = str(bin(i))[2:]        print (str(i) + "," + str(bin(i)),end=',')        gray_code = bin2gray(binary_code_origin,bit_wise)        binary_code = gray2bin(gray_code)        if int(binary_code_origin) != int(binary_code):            print (binary_code)            print (binary_code_origin)            print ("Error")################################################Call Main()###############################################################################if __name__ == '__main__':    main()
0 0
原创粉丝点击