二进制代码的名称是什么,其中每个整数由1和0的相等数字表示

时间:2017-03-23 18:47:14

标签: encoding binary

我想知道当每个表示具有相同数量的1和0时,是否存在整数二进制编码的特定名称。这是一个例子

 0 000111
 1 001011
 2 001101
 3 001110
 4 010011
 5 010101
 6 010110
 7 011001
 8 011010
 9 011100
10 100011
11 100101
12 100110
13 101001
14 101010
15 101100
16 110001
17 110010
18 110100
19 111000

我认为这种代码应经常用于人工二进制网络,以平衡任何输入的活动神经元数量。我认为这种代码与汉明代码有关,但似乎我错了。

1 个答案:

答案 0 :(得分:0)

非常感谢@ m69,我对步行位算法有了一个很好的想法,经过一些小的改动就完成了这项工作。我在这里发布这个python代码以防万一其他人需要它。

def equalcodegen(size):
    x = [ 1 for _ in xrange(size/2)]+[ 0 for _ in xrange(size/2)]
    def walk(seq):
        idx=0
        while seq[idx] != 0: idx+=1
        if idx == 0: 
            s = seq[:]
            yield []
        else:
            seq[idx-1] = 0
            for pos in xrange(idx, len(seq)):
                s = seq[:]
                s[pos] = 1
                yield s
                for p in walk(s[:pos]):
                    if len(p) == 0: continue
                    k = p+s[pos:]
                    yield k


    wset =  [x]+[ x for x in walk(x) ]
    return [ "".join( "%d"%x for x in p) for p in wset ]

if __name__ =="__main__":
    s =  equalcodegen(6)
    for x in s:
        print x

结果:

110000
110100
101100
011100
110010
101010
011010
100110
010110
001110
110001
101001
011001
100101
010101
001101
100011
010011
001011
000111