首页 > 其他 > 详细

位运算的精髓

时间:2021-07-21 17:00:49      阅读:18      评论:0      收藏:0      [点我收藏+]

  简直tmd绝了,位运算能被玩出这么多花活。

  给个数如2,希望你把它的二进制数偶数位的全部右移动一个。例如以前是011010 现在希望是100101。

  怎么做,

  ((num&0xaaaaaaaa)>>1 | (num&0x55555555)<<1) 直接得到答案。
  技术分享图片

 

   用0xa来保留偶数位去除奇数位,然后右移动1,用0x5来保留奇数位去除偶数位然后左移动1.这样就告成了。

  

  值得一提的是,python中整数虽然是以补码形式保存的,但是负数特殊,负数输出的是原码的二进制前面加了个负号。所以如果想要用负数进行二进制的位运算,要先把负数&0xffffffff来把所有都置1.

位运算的精髓

原文:https://www.cnblogs.com/snailbuster/p/15039457.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!