愿各位程序员都能记住,输出第一条hello world时候的心情。坚持下去,你的每一条代码都在默默的改变世界,加油!加油!加油! “这些年我一直提醒自己一件事情,千万不要自己感动自己。大部分人看似的努力,不过是愚蠢导致的。 什么熬夜看书到天亮,连续几天只睡几小时,多久没放假了,如果这些东西也值得夸耀,那么富士康流水线上任何一个人都比你努力多了。 人难免天生有自怜的情绪,唯有时刻保持清醒,才能看清真正的价值在哪里。

位运算2

 本人水平有限,题解不到为处,请多多谅解

 本蒟蒻谢谢大家观看

参照这篇博客+自己的理解,以下内容也部分复制自qxAi的这篇博客,这里谢谢博主

这篇博客https://blog.csdn.net/u011077606/article/details/43487421

1.判断一个数字x二进制下第i位是不是等于1。

方法:if ( ( ( 1 << ( i - 1 ) ) & x ) > 0)

将1左移i-1位,相当于制造了一个只有第i位上是1,其他位上都是0的二进制数。然后与x做与运算,如果结果>0,说明x第i位上是1,反之则是0。

2.将一个数字x二进制下第i位更改成1;

方法:x = x | ( 1<<(i-1) )

将1左移i-1位,相当于制造了一个只有第i位上是1,其他位上都是0的二进制数。然后与x做或运算,保证x二进制下的第i位无论为多少,只要与1或运算,使得x二进制下的第i位为1;

3.把一个数字二进制下最靠右的第一个1去掉。

方法:x=x&(x-1)

因为相邻两个十进制数的末尾不是0就是1保证x的二进制数最靠右的第一个1所在的位置 yy 与  (x-1)的二进制数所在位置 yy 的值为0(读者可以自行验证),所以将其表示的二进制数进行与运算,保证x或的二进制最靠右的第一个1跟0进行与运算使得结果为0;

 

若还不理解的话,请参照本人的上一篇博客:位运算   

https://www.cnblogs.com/nlyzl/p/11277212.html

 

posted @ 2019-07-31 16:52  max_lemon  阅读(234)  评论(0编辑  收藏  举报
Live2D
别人恋爱不成功,你连暗恋都不成功! 你写不出代码的原因只有一个,那就是你没有彻底理解这个算法的思想!!-----沃茨·基硕德