lowbit()
lowbit()
lowbit()简介:众所周知,lowbit()操作是算法竞赛中的高级技巧,特别是高级数据结构,线段树的核心,还有什么二进制与位运算题目,而本文就用最通俗易懂的话,来教会大家lowbit的含义。含义:lowbit(x)是x的二进制表达式中最低位的1所对应的值。什么意思了:十进制 二进制 最低位的1所对应的值对应的二进制数 最低位的1所对应的值对应的十进制数1 1 1 12 10
lowbit()
简介:众所周知,lowbit()操作是算法竞赛中的高级技巧,特别是高级数据结构,线段树的核心,还有什么二进制与位运算题目,而本文就用最通俗易懂的话,来教会大家lowbit的含义。
含义:lowbit(x)
是x
的二进制表达式中最低位的1所对应的值。
什么意思了:
十进制 二进制 最低位的1所对应的值对应的二进制数 最低位的1所对应的值对应的十进制数
1 1 1 1
2 10 10 2
111 1 1 4 100 100 4
5 101 1 1
6 110 10 2
7 111 1 1
方法:我们得到lowbit
的值,只需要得到最后一个1
的位置,并且把除了这个位置之外的所有位置全部置成零。然后输出就可以。
先上代码:
代码语言:javascript代码运行次数:0运行复制int lowbit(int x)
{
return x&(-x);
}
这个代码实在是很简单,就是一个数与它的负数进行与运算。
我们希望获得一个数的最低位的1所对应值,那么就需要将这个数字与自己的补码取与,那么计算机中一个数的补码是啥了,没错就是这个数字的负数(负数就是正数的反码+1),
为啥和补码去与就可以了:
(110)2 = 6 原码
(001)2 反码
(010)2 补码
可以发现变为反码后 x 与反码数字位每一位都不同, 所以当反码加1,成为补码的时候,反码会逢1一直进位直到遇到0,且这个0变成了1,然后就寻到了,第一个不为0的1的位置,而且这个1前面的数字,全部变成了0.
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2025-01-20,如有侵权请联系 cloudcommunity@tencent 删除算法数据结构二进制技巧计算机#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格
上传时间: 2025-07-20 08:35:15
上一篇:深入理解单体架构
下一篇:Vue基础面试题题目一
推荐阅读
留言与评论(共有 13 条评论) |
本站网友 北京ios培训机构 | 4分钟前 发表 |
所以当反码加1 | |
本站网友 聊城孟达集团 | 27分钟前 发表 |
线段树的核心 | |
本站网友 济南青华医院 | 14分钟前 发表 |
来教会大家lowbit的含义 | |
本站网友 木瓜丰胸的最佳吃法 | 18分钟前 发表 |
成为补码的时候 | |
本站网友 月咏 | 14分钟前 发表 |
还有什么二进制与位运算题目 | |
本站网友 生男生女清宫图准吗 | 12分钟前 发表 |
还有什么二进制与位运算题目 | |
本站网友 宁波公司 | 5分钟前 发表 |
就是一个数与它的负数进行与运算 | |
本站网友 翔宇音乐网 | 5分钟前 发表 |
就是一个数与它的负数进行与运算 | |
本站网友 sh906 | 21分钟前 发表 |
来教会大家lowbit的含义 | |
本站网友 绩优股有哪些 | 16分钟前 发表 |
还有什么二进制与位运算题目 | |
本站网友 安亭新镇德绍豪斯 | 28分钟前 发表 |
第一个不为0的1的位置 | |
本站网友 福麟阁 | 4分钟前 发表 |
为啥和补码去与就可以了:(110)2 = 6 原码(001)2 反码(010)2 补码可以发现变为反码后 x 与反码数字位每一位都不同 |