美文网首页
移位运算

移位运算

作者: 在彼处 | 来源:发表于2019-01-22 11:27 被阅读0次

    移位运算位自己在写遗传算法的代码的时候出现的,如下图所示,当j=0的时候,此时

    zero_one = test_j * random.randint(0, 1)       #值为0

    左移一位时候,变为test_j = 1了,开始没有搞明白,后来想了一下因为0在存储的时候不占位的原因,所以左移一位之后,test_j变为1

    j = 0

    gene_byte = (gene).bit_length() = 0 //二进制位数位0

    图1 第二个for循环j=0时候值

    zero_one的主要左右就是移位,在第二个for循环里边,原本gene 占位为0个,经过j=1循环,二进制占位为2,因为zero_one此时为10

    zero_one = 10

    gene = 0

    #则或运算将gene的二进制占位增加了2位,如图二所示此时gene的占位数增加了

    zero_one | gene = 10

    gene_byte = 2

    图二 第二个for循环j=1时候值

    因此在移位运算中我们可以得出一下结论:

    如果一个值为0则此时该值不占位,左移或者右移一位之后,值将变为1

    用个实例来说明吧:

     a = 001

    b = 01

    b = a | b  #也就是说先运算后赋值

    b = 001

    相关文章

      网友评论

          本文标题:移位运算

          本文链接:https://www.haomeiwen.com/subject/vshljqtx.html