一行代码搞定整数二进制中的连续1判定
消息来源:baojiabao.com 作者: 发布时间:2026-05-01

作者 | veelion
责编 | 郭芮
碰到一个利用字节位操作解决的问题,如何判断一个整数的二进制是否含有至少两个连续的1?
问题本身并不复杂,利用二进制的未操作即可完成,方法也有多种。不同方法的效率也差很多,下面我们分别利用Python和C来实现并对比一下。
方法一:从头到尾遍历一遍每一位即可找出是否有连续的1存在
这个方法是最普遍的、第一感觉就能想到的方法,下面我们看一下它的具体实现。
Python代码:
上面的实现中,对于整数n先做取余运算(n % 2)。如果余数为1,则n的最后一位是1,否则为0,并用this_is_one记录当前位;然后判断一下,这次和上次的最后一位是不是都是1。如果是,则可以判定该整数有两个连续的1,否则把n向左移一位,继续循环开始的取余操作。
方法二:无需遍历每一位,但还是位操作:移一位(左移、右移皆可)然后和原数“位与”一下即可
这个原理不复杂,思考一下:
如果有两个连续的位为1,原数和移为后的数“位与”操作,就是会发生这两个连续的1进行“位与操作”,则结果中必出现至少一个位为1 (1&1 == 1),结果不为零;
如果没有至少两个连续的位为1,则1的两边都是0,原数和移为后的数“位与”操作,就是1与两边的0进行“位与操作”,则所有的1都变成了0 (1&0 == 0),结果必为零。
由以上推理,算法就简化了很多,只用一行代码即可搞定。
Python代码:
那么,上面两种方法的效率差多少呢,我们来测试一下看看:
Python代码:
看一下运行结果,循环1百万次,方法二的速度是方法一的4倍多:
接下来,用C实现一下看看效率如何:
C语言代码:
编译并运行以上C代码:
从以上结果看,C语言实现的算法二比算法一块十几倍。
编译优化后运行:
编译器优化后的结果,算法二比算法一块4倍多,但都比未优化的快了很多。
顺便也“自黑”一下Python的性能,确实比起C来差很远。但是合适的工具做适合的事情永远是对的,不妨理解一下下面这段引文:
有个需要每天运行的Python程序,运行大概需要1.5秒。
我花了六小时用Rust重写它,现在运行需要0.06秒。
效率的提升意味着,我要花41年零24天,才能找回我多花的时间......
作者:veelion,具有十年开发经验,主要使用Python、C++语言,从事网络爬虫、搜索引擎、自然语言理解处理等领域的研发工作。
声明:本文为作者投稿,版权归对方所有。
相关文章
B站怎么炸崩了哔哩哔哩服务器今日怎么又炸挂了?技术团队公开早先原因2023-03-06 19:05:55
苹果iPhoneXS/XR手机电池容量续航最强?答案揭晓2023-02-19 15:09:54
华为荣耀两款机型起内讧:荣耀Play官方价格同价同配该如何选?2023-02-17 23:21:27
google谷歌原生系统Pixel3 XL/4/5/6 pro手机价格:刘海屏设计顶配版曾卖6900元2023-02-17 18:58:09
科大讯飞同传同声翻译软件造假 浮夸不能只罚酒三杯2023-02-17 18:46:15
华为mate20pro系列手机首发上市日期价格,屏幕和电池参数配置对比2023-02-17 18:42:49
小米MAX4手机上市日期首发价格 骁龙720打造大屏标准2023-02-17 18:37:22
武汉弘芯遣散!结局是总投资1280亿项目烂尾 光刻机抵押换钱2023-02-16 15:53:18
谷歌GoogleDrive网云盘下载改名“GoogleOne” 容量提升价格优惠2023-02-16 13:34:45
巴斯夫将裁员6000人 众化工巨头裁员潮再度引发关注2023-02-13 16:49:06
人手不足 韵达快递客服回应大量包裹派送异常没有收到2023-02-07 15:25:20
资本微念与李子柒销声匿迹谁赢? 微念公司退出子柒文化股东2023-02-02 09:24:38
三星GalaxyS8 S9 S10系统恢复出厂设置一直卡在正在检查更新怎么办2023-01-24 10:10:02
华为Mate50 RS保时捷最新款顶级手机2022多少钱?1.2万元售价外观图片吊打iPhone142023-01-06 20:27:09
芯片常见的CPU芯片封装方式 QFP和QFN封装的区别?2022-12-02 17:25:17
华为暂缓招聘停止社招了吗?官方回应来了2022-11-19 11:53:50
热血江湖手游:长枪铁甲 刚猛热血 正派枪客全攻略技能介绍大全2022-11-16 16:59:09
东京把玩了尼康微单相机Z7 尼康Z7现在卖多少钱?2022-10-22 15:21:55
苹果iPhone手机灵动岛大热:安卓灵动岛App应用下载安装量超100万次2022-10-03 22:13:45
苹果美版iPhone可以在中国保修 从哪看怎么查询iPhone的生产日期?2022-09-22 10:00:07










