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
- python生成格雷码
- python笔记, python 生成注释
- [python]自动生成版本号
- Python生成随机数
- python 随机数生成
- Python生成exe文件
- python随机数生成
- Python生成随机数
- 用python生成xml
- python随机数生成
- python编译生成二进制文件
- python生成pdf文件
- python随机数生成
- python+pygame 生成迷宫
- python 随机数生成
- python生成用户名列表
- Python 生成矩阵
- python+selenium 生成测试报告
- Light OJ 1382 The Queue(树形DP+数学)
- 快速排序
- 深入Java虚拟机(2)——Java的平台无关性
- PCA的数学原理
- javaIO流
- python生成格雷码
- Android 图片三级缓存之内存缓存(告别软引用(SoftRefrerence)和弱引用(WeakReference))
- Unity dll 热更新 前奏
- Git学习总结
- TLD学习(3)-最近邻分类器(NN)
- HDU 3394 Railway 点双连通分量
- 程序员为什么应该尽量避免争吵
- 【SPOJ-TSHOW1】Amusing numbers【二进制】
- 关于mysql如何添加InnoDB