python生成格雷码

在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码(Gray Code). 

第 N 个格雷码在 N^(N>>1) 的位中

^ 按位异或,同0异1, >>1 左移一位 也就是除以2、

假设只有四个数字生成格雷码 那么数字序列是:0 1 3 2

gray-code

 for i in range(0, 100):
        gary_c = i ^ (i >> 1)

数字转换成二进制

def d2b(d, n):
    """
    n:二进制位数
    d:数字序列 或者单个数字
    """
    d = np.array(d)
    d = np.reshape(d, (1, -1)) #1 m
    power = np.flipud(2**np.arange(n))#n

    g = np.zeros((np.shape(d)[1], n)) #m n

    for i, num in enumerate(d[0]):#num 1-m
        g[i] = num * np.ones((1,n))
    b = np.floor((g%(2*power))/power)
    return b

调用

合并:

for i in range(0,10):
    z = i ^ (i >> 1)
    print(d2b(z, 8))

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值