检测整数内的单个一位流

2024-01-14

我必须检查一个号码是否满足以下条件:

  • 在二进制中,所有一位必须是连续的。
  • 该数字必须至少设置一位。
  • 连续的一位可能从 MSB 开始或在 LSB 结束,因此如果该数字由单个一位流后跟零位流组成,则完全有效,反之亦然。

我编写了一个代码来检查现实问题的这些条件(检查数据文件完整性)。

它工作起来没有问题,而且对时间要求不高,但我是一个老的比特狂,喜欢这样的谜题,所以我试图想出一种更聪明的方法来检查单比特流。

字符串被零包围的情况很容易,但不能处理特殊情况。

欢迎任何想法、二进制黑客和部分解决方案!


为了使我的要求更清楚,举一些例子:以下数字满足我的标准:

  0x80000000
  0x00000001
  0xff000000
  0x000000ff
  0xffffffff
  0x000ff000

以下数字则不然(因为它们有多个连续的字符串):

  0xf00000f <- one-bit streams should not wrap-around at 2^n
  0x0001700 <- a trivial example.
  0x0000000 <- no one bit at all.

这应该做你想做的。

if(i == 0)
    return false;
while(i % 2 == 0) {
    i = i / 2;
}
return (i & (i + 1)) == 0;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

检测整数内的单个一位流 的相关文章

  • 对二进制数的字符串表示进行按位运算 python 2.7

    我想对二进制数的两个字符串表示执行按位或 但我不知道如何将字符串转换为原始二进制 a 010110 b 100000 a b 应该产生 110110 然后我想计算 on 位的数量 这应该返回 4 您可以使用内置的将字符串转换为二进制int
  • Big O 用于有限、固定大小的可能值集

    这个问题 https stackoverflow com questions 12305028 java what is the best way to find first duplicate character in a string引
  • 为什么 -INT_MIN = INT_MIN 在有符号的二进制补码表示中?

    我仍然没有找到为什么最低的有符号负数没有等效的有符号正数的原因 为简单起见 我的意思是 3 位二进制数 100 是 4 但我们不能有符号格式的正 4 因为我们不能 它溢出了 那么我们如何知道补码 1000 是 4 1000 0000 是 1
  • 替代位置基础系统(十六进制、八进制、二进制)如何工作?如何将它们转换为十进制?

    我以前在编程课上没有学过这一点 但现在我需要知道它 有哪些学习这些数字以及如何转换它们的好资源 我几乎会像记住乘法表一样记住这些 在我们日常的十进制系统中 基数或radix http en wikipedia org wiki Radix
  • 如何用php将文件内容转换为字节数组

    我想用PHP将上传的文件保存 插入 到数据库中 数据库字段的类型是varbinary 最后 我想要获得 VarBinary 输出 的内容 就像在 C 中读取文件然后将其存储在字节数组中并将数组插入到 VarBinary 中一样 我与数据库的
  • 是否存在 UTF-8 编码中未使用的字节?

    据我了解 UTF 8 是 ASCII 的超集 因此包括不用于表示可打印字符的控制字符 我的问题是 是否有任何字节 256 个不同的字节 未被 UTF 8 编码使用 我想知道你是否可以转换 编码UTF 8 文本转二进制 这是我的思考过程 我不
  • 如何快速将 Int16 转换为两个 UInt8 字节

    我有一些二进制数据 将两个字节值编码为有符号整数 bytes 1 255 0xFF bytes 2 251 0xF1 Decoding 这相当简单 我可以提取一个Int16这些字节的值 Int16 bytes 1 lt lt 8 Int16
  • 设置字节中的特定位

    我正在尝试设置 Java 字节变量中的位 它确实提供了适当的方法 例如 setBit i 有谁知道我如何才能实现这一点 我可以按位迭代给定的字节 if my byte 1 lt lt i 0 但是我不能将此位置设置为 1 或 0 可以吗 使
  • 十六进制数的按位异或

    我们如何在 Python 中对十六进制数进行异或 例如 我想要异或 ABCD and 12EF 答案应该是 B922 我使用了下面的代码 但它给出了错误的结果 xor two strings of different lengths def
  • 反转二进制网络

    如何反转二元方程 以便找到哪些输入将产生给定的输出 Example Inputs i0 through i8 Outputs o0 through o8 Operators XOR AND 二元方程 1 i0 1 i1 0 i2 1 i3
  • Python 相当于 Bit Twiddling Hacks 中的 C 代码?

    我有一个位计数方法 我正在尝试尽可能快地实现 我想尝试下面的算法位摆弄黑客 http graphics stanford edu seander bithacks html CountBitsSetParallel 但我不知道 C 什么是
  • 32 位数字中 1 的数量

    我正在寻找一种在 32 位数字中包含 1 数量的方法 之间不使用循环 任何人都可以帮助我并向我提供代码或算法吗 这样做 提前致谢 See Integer bitCount int http java sun com javase 6 doc
  • “单词的正则表达式”(语义替换)-任何示例语法和库吗?

    我正在寻找在给定过程语言的情况下对单词而不是字符进行正则表达式样式转换的常用技术的语法示例 例如 为了追踪复制 人们可能想要创建一份具有相似含义但具有不同单词选择的文档 我希望能够简洁地定义这些可以应用于文本流的可能的转换 例如 快速地no
  • 如何看待Python的负数按位运算?

    我发现很难思考 Python 和 Python3 的无限精度负数和按位运算 它不是 32 位或 64 位 这1左边的 s 可以被认为是 无穷多个 它不是很明确 这就是为什么有时很难思考它是如何运作的 似乎一种可行的方法是 总是让它更多 例如
  • 将位图旋转 90 度

    我有一个1 个 64 位整数 我需要在 8 x 8 区域中旋转 90 度 最好使用直接位操作 我想不出任何方便的算法 例如 这个 0xD000000000000000 110100000000000000000000000000000000
  • 快速约会算法

    我在一家咨询公司工作 大部分时间都在客户所在地 正因为如此 我很少见到同事 为了更好地了解彼此 我们将安排一个晚宴 会有很多小桌子 方便人们聊天 为了在聚会期间与尽可能多的不同的人交谈 每个人都必须每隔一段时间 比如每小时 换一张桌子 如何
  • 这个按位运算如何检查 2 的幂?

    我正在看一些应该很简单的代码 但我的数学在这里严重失败 下面是一个使用以下条件检查数字是否为 2 的幂的条件 if num 1 num num 1 make num pow of 2 我的问题是 如何在 num 和 num 1 之间使用按位
  • 互联网 RFC 数据包图中预期的位(不是字节)顺序是哪个

    我正在我的家庭有线网络上解析 ICMPv6 数据报 但在特定 RFC 中找不到对位排序约定的明确提及 多字节字段是网络顺序的 但是字节内的位又如何呢 机器是按字节寻址的 但网络硬件对位进行序列化 在图表中 8 位字段 左侧 的一位最终位于无
  • 以 O(1) 计算汉明权重 [重复]

    这个问题在这里已经有答案了 在二进制表示中 汉明权重是 1 的数量 我偶然发现了网络并找到了一个 O 1 的答案 v v v gt gt 1 0x55555555 v v 0x33333333 v gt gt 2 0x33333333 in
  • 面向对象编程语言中的引用默认情况下是否应该不可为空? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi

随机推荐

  • C++ 支持成员函数引用吗?

    C 允许函数指针 and 函数参考 https stackoverflow com questions 480248 function references 它还允许指向成员函数的指针 But 是否允许引用成员函数 我似乎无法从标准中推断出
  • Emacs 颜色。为什么当前行是灰色的?森伯恩主题

    我安装了Prelude https github com bbatsov prelude在我的 emacs24 上 我使用的是ubuntu 12 04 我第一次使用它时效果很好 但接下来的次数就不行了 在我当前的行上 字体颜色是灰色的 因此
  • ngx-翻译和 *ngFor

    我有这个代码 div span img alt span h4 service name h4 p service desc p div 如何对具有 3 个参数的每个服务进行翻译 在正常情况下我使用 something translate
  • 在 Keras 中,当我创建具有 N 个“单元”的有状态“LSTM”层时,我到底要配置什么?

    正常的第一个参数Dense层也是units 是该层中神经元 节点的数量 然而 标准 LSTM 单元如下所示 这是 的修改版本 了解 LSTM 网络 http colah github io posts 2015 08 Understandi
  • 使用 Lumen 获取 file_get_contents

    我将此代码放入函数 php 类 中 theFile test test xml these are in the public folder dd file get contents theFile 如果我去mydomain local t
  • 基于两个表之间的子查询的Oracle SQL更新

    我目前正在编写更新语句 以使可查询的表不断保持最新 两个表之间的架构相同 内容并不重要 STAGING ID NAME COUNT PRODUCTION ID NAME COUNT 我的更新语句如下所示 update PRODUCTION
  • C# 小数类型除法的精度在 Mono 上不同?

    decimal d1 4 0m decimal d2 40 0m decimal d d1 d2 string repr d ToString 在 Windows 上 我得到的 repr 为 0 1 在 Mono Xamarin Andro
  • 为什么未初始化的属性在课堂上公开?

    请考虑以下代码 class foo function bar this gt baz hello there f new foo f gt bar echo f gt baz hello there 为什么上面的代码有效 我的意思是我还没有
  • Oracle CASE 语句?

    我有一个存储过程 我在其中传递布尔值 例如IS ELIGIBLE 现在我希望能够编写如下查询 SELECT col1 CASE WHEN IS ELIGIBLE THEN col2 100 ELSE col2 50 END INTO OUT
  • JavaFX 导航栏和内容窗格

    我想在我的新项目中使用 JavaFX 并且想要像下面的屏幕截图所示的东西 在左侧网站上我需要一个导航栏 在右侧网站上我需要一个内容 因此 我会在左侧使用 VBox 在右侧使用 AnchorPane 或者更好的是 ScrollPane 当我单
  • Terraform:heredoc 锚点中的无效字符

    我正在尝试在中使用多行字符串provisioner remote exec 我的 Terraform 脚本块 然而每当我使用EOT文档和各种示例中概述的语法我收到一个错误 抱怨有 invalid characters in heredoc
  • 包含 json 的数据属性中的单引号

    化妆品问题 我有一个 html 元素 其中包含一些嵌入图像的可能尺寸 这些尺寸存储为 div class inside div
  • Chrome 扩展程序不发送 SameSite=Lax cookie

    我在通过弹出脚本的 chrome 扩展处理 cookie 时遇到一些问题 popup js 内容 document addEventListener DOMContentLoaded gt function cookieinfo chrom
  • Tesseract OCR:解析表格单元格

    我正在使用 cmd 中的 Tesseract OCR v4 0 0 alpha 从如下所示的表格的 png 中提取文本 我希望 Tesseract OCR 能够解析一个单元格中的内容 然后再转到下一个单元格 我不想继续 行 中的下一个单词
  • 关于 Google Directions API 中的 escape=tollroads 的问题

    我有一些关于 Google Directions API 的问题 Google Directions API 中的 escape tollroads 是否完全避开部分收费公路 或者它是否足够聪明 知道有些路线可以在部分收费公路上行驶 但实际
  • Android Studio 运行应用程序太慢

    当我运行我的应用程序时 大约需要 10 分钟才能在我的手机上显示 而且每次更改代码也需要 10 分钟 我应该怎么办 我在用Android Studio 2 0 在 android studio 中转到 文件 gt 设置 gt 构建 执行 部
  • 如果攻击者知道盐,那么它们对安全性是否毫无用处?

    假设我有一个这样设置的用户表 CREATE TABLE users id INTEGER PRIMARY KEY name TEXT hashed password TEXT salt TEXT 创建用户时 会生成随机生成的盐并将其与类似结
  • 如何在response.redirect中将列表作为参数传递

    问题1 我有两个列表 我想在下一页中访问它们 我将重定向它们 目前的结果 当我传递结果时 它在 url 中显示列表数据类型 ex System Collections Generic List1 IDataEntities ISearchR
  • Bash 命令查看 dir 中是否有文件 - 测试目录是否为空[重复]

    这个问题在这里已经有答案了 我有以下 bash 脚本 if ls Users david Desktop empty gt dev null then echo yes files else echo no files fi 如果目录中有一
  • 检测整数内的单个一位流

    我必须检查一个号码是否满足以下条件 在二进制中 所有一位必须是连续的 该数字必须至少设置一位 连续的一位可能从 MSB 开始或在 LSB 结束 因此如果该数字由单个一位流后跟零位流组成 则完全有效 反之亦然 我编写了一个代码来检查现实问题的