快速判断二进制中有多少个1

xiaoxiao2021-02-28  148

x=x&(x-1)   表达式的意思就是:把x的二进制表示 从低位开始,将遇到的第一个为1的比特位 置0。 例如: e1: x = 01001000 x-1 = 01000111 x&(x-1)=01000000 e2: x = 01001001 x-1 = 01001000 x&(x-1)=01001000 在循环中利用该表达式可以快速的判断一个数的二进制中有多少个1。 int func(x) { int countx = 0; while(x) { countx ++; x = x&(x-1); } return countx; } x=x&(x-1)还可以快速判断x是不是2^n。当x为unsigned类型的变量,且其值为2的n次幂的时候,结果为零。
转载请注明原文地址: https://www.6miu.com/read-34570.html

最新回复(0)