移位运算

移位运算位自己在写遗传算法的代码的时候出现的,如下图所示,当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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 最近工作中被运算效率问题所困扰,比如大数据排序或者去重,因此现在需要补习一下位移运算。 首先讲一下位移概念? 左位...
    等一夏_81f7阅读 1,384评论 0 0
  • 1、左移运算符 左移运算符<<使指定值的所有位都左移规定的次数。 1)它的通用格式如下所示: value << n...
    dlihasa阅读 1,858评论 0 2
  • 位运算符 位运算符主要针对两个二进制数的位进行逻辑运算,它包括:与(&)、或(|)、非(~)、异或(^)**运算规...
    深情不及酒伴阅读 1,174评论 0 1
  • 京东 当当 亚马逊 北新网 http://www.bxmedia.net/
    风峰疯封阅读 156评论 0 0
  • 往事如烟,美好的事物如烟花般绚烂,也如烟花般短暂,刹那的芳华,转瞬便逝!有时候幸福就像插上了翅膀,瞬间飞来,瞬间又...
    玉生烟阅读 249评论 0 0

友情链接更多精彩内容