位运算之x&(x-1)

x&(x-1)有两种用途:

1.通过与0比较判断x是否是2的n次幂

如果是,那么x-1后最高位1会后退一位,剩余位都是1,所以x>0&&(x&(x-1))==0,即是;否则不是。

【注意要打括号,“==”优先级高于‘&’】

2.判断x二进制有多少个1

通过x=x&(x-1),每一次赋值会且只会将最低位1变成0,那么有多少次while(x!=0)即有多少个1。

posted @ 2022-02-14 15:17  Renhr  阅读(194)  评论(0)    收藏  举报