- 计算数的二进制1的个数
- 判断是否为2的次方数
将x转为二进制,计算1的数目
1 | int func(int x){ |
每执行一次x = x & (x-1)
,会将x
用二进制表示时最右边的一个1变为0,因为x-1
会将该二进制最右边的一个1变为0。
判断数x是否为2的次方数
1 | int func(int x){ |
原理同上,此外要注意==
的优先级高于&
,且x
不能为0。
1 | int func(int x){ |
每执行一次x = x & (x-1)
,会将x
用二进制表示时最右边的一个1变为0,因为x-1
会将该二进制最右边的一个1变为0。
1 | int func(int x){ |
原理同上,此外要注意==
的优先级高于&
,且x
不能为0。
Title:x&(x-1)的使用
Author:Angie Lee
Created:2022-02-25, 22:19:41
Updated:2022-02-26, 14:18:04
Full URL:https://angielee233.github.io/2022/02/25/x&(x-1)/
License: "CC BY-NC-SA 4.0" Keep Link & Author if Distribute.