lowbit
lowbit 函数
定义
lowbit(n)
定义为非负整数
任一非负整数都可被表示一个二进制数:
而 lowbit 是这样的,设一个非负整数
例如:
实现
lowbit(n)=n&(-n)
设
拿
先将
而在补码表示下 ~n=-1-n
,即 -n=~n+1
,所以 lowbit(n)=n&(-n)
。
应用
统计 1 的个数
一直进行 lowbit,不断减去直到为
while(x)
{
x-=x&-x;
cnt++;
}
找出所有为 1 的位
lowbit 配合 hash,即可做到找出所有为 1 的位。
const int N=1<<20;
int H[N+5];
for(int i=0;i<=20;i++) H[1<<i]=i;//代替 log 运算
while(x)
{
cout<<H[x&-x]<<" ";
x-=x&-x;
}
分类:
算法学习
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)