- 计算数的二进制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.