位运算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
标签:运算,二进制,这篇,位上,靠右,博客 来源: https://www.cnblogs.com/nlyzl/p/11277469.html