一行代码即可确定整数二进制中的连续 1!

 2024-02-08 05:01:23  阅读 0

遇到使用字节位操作解决的问题。 如何判断一个整数的二进制表示是否至少包含两个连续的1?

问题本身并不复杂。 可以使用二元运算来完成。 方法有很多种。 不同方法的效率也有很大差异。 下面我们用C和C来实现和比较。

方法一:从头到尾遍历每一位,看是否有连续的1。

整数判断题_整数判断python_python if 判断整数

这种方法是最常见的,也是第一眼想到的方法。 我们来看看它的具体实现。

代码:

def method_1(n) :                                                                                                                   last_is_one = False    this_is_one = False    while n > 0:        this_is_one = n % 2         if this_is_one and last_is_one:            return True        n = n >> 1        last_is_one = this_is_one    return False

在上述实现中,首先对整数n进行余数运算(n%2)。 如果余数为1,则n的最后一位为1,否则为0,记录当前位; 然后判断本次和上次的最后一位是否都是1,如果是,则可以判断该整数有两个连续的1。 否则,n 左移一位,并继续循环开头的余数运算。

整数判断python_整数判断题_python if 判断整数

方法二:不需要遍历每一位,但仍然是位运算:移位一位(左移或右移均可),然后与原数“按位与”。

这个原理并不复杂,想一想:

基于以上推理,算法大大简化,只需一行代码即可完成。

文本的其余部分是一行代码,用于确定整数二进制中的连续 1!

标签: 整数 操作 搞定

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码