bit-manipulation相关内容

检查整数中是否只设置了一个位(无论其位置如何)

我使用 64 位整数中的位存储标志. 我想知道在 64 位整数中的位置是否设置了一个位(即我不关心任何特定位的位置). boolean isOneSingleBitSet (long integer64){返回 ....;} 我可以使用 Bit Twiddling Hacks 计算位数(肖恩·埃隆·安德森(Sean Eron Anderson)),但我想知道仅检测是否设置了一个位的最有效方法 ..
发布时间:2022-01-09 19:27:51 Java开发

Python中的二进制补码?

Python 中的整数存储在二进制补码中,对吗? 虽然: >>>x = 5>>>仓(x)0b101 还有: >>>x = -5>>>仓(x)-0b101 这很蹩脚.如何让 python 给我 REAL 二进制位的数字,并且前面没有 0b?所以: >>>x = 5>>>仓(x)0101>>>y = -5>>>仓(y)1011 解决方案 不确定如何使用标准库获得所需的内容.有一些脚 ..
发布时间:2022-01-09 19:23:42 Python

如何从 32 位数字中提取位

我对 C 的了解不多,但我遇到了一个问题,因为我的一位同事正在休假. 我有一个 32 位数字,我必须从中提取位.我确实经历了一些线程,但我仍然不清楚如何做到这一点.如果有人可以帮助我,我将非常感激. 这是我需要做的一个例子: 假设十六进制数 = 0xD7448EAB. 二进制 = 1101 0111 0100 0100 1000 1110 1010 1011. 我需要提取 1 ..
发布时间:2022-01-09 19:20:59 其他开发

C题:off_t(和其他有符号整数类型)的最小值和最大值

我偶尔会遇到一个整数类型(例如 POSIX 有符号整数类型 off_t),如果为它的最小值和最大值设置一个宏会很有帮助,但我不知道如何做一个真正便携的. 对于无符号整数类型,我一直认为这很简单.0 为最小值,~0 为最大值.我已经阅读了几个不同的 SO 线程,这些线程建议使用 -1 而不是 ~0 以实现可移植性.有一些争论的有趣线程在这里: c++ - 使用安全吗 -1 将所有位设置为真? ..
发布时间:2022-01-09 19:20:14 其他开发

相当于大于运算符的按位运算

我正在研究一个函数,该函数基本上可以查看两个整数中的哪一个更大.传递的参数是 2 32 位整数.诀窍是唯一允许的运算符是 !~ |&(无强制转换,除有符号整数、*、/、- 等之外的其他数据类型.). 到目前为止,我的想法是将两个二进制文件 ^ 放在一起,以查看它们不共享的 1 值的所有位置.然后我想要做的是取那个值并将 1 隔离到最左边.然后看看其中哪一个有这个价值.那么该值将更大.(假设我 ..
发布时间:2022-01-09 19:19:13 其他开发

在 JavaScript 中有效地计算整数中的位数

假设我有一个整数 I 并且想要以二进制形式获得 1 的计数. 我目前正在使用以下代码. Number(i.toString(2).split("").sort().join("")).toString().length; 有没有更快的方法来做到这一点?我正在考虑使用按位运算符.有什么想法吗? 注意: i 在 32 位限制范围内. 解决方案 您可以使用此集合中的策略 Bit ..
发布时间:2022-01-09 19:18:42 前端开发

按位运算符简单地翻转整数中的所有位?

我必须翻转整数二进制表示中的所有位.给定: 10101 输出应该是 01010 当与整数一起使用时,完成此操作的位运算符是什么?例如,如果我正在编写像 int flipBits(int n); 这样的方法,那么主体中会发生什么?我只需要翻转数字中已经存在的内容,而不是整数中的所有 32 位. 解决方案 ~ 一元运算符是按位取反.如果您需要的位数少于 int 中的位数,那么您需要在事 ..
发布时间:2022-01-09 19:15:03 Java开发

十进制转二进制

我有一个数字,我想在 C 中转换为二进制(从十进制). 我希望我的二进制始终为 5 位(十进制永远不会超过 31).我已经有一个通过除法手动完成的功能,但很难将其填充到 5 位. 有没有更简单的方法?也许使用按位移位? 我还希望二进制文件用 char * 表示 解决方案 这是一个优雅的解决方案: void getBin(int num, char *str){*(str+ ..
发布时间:2022-01-09 19:13:19 其他开发

无符号整数中的 C 反转位

我正在使用按位运算符将无符号整数转换为二进制,目前正在使用整数 &1 检查位是 1 还是 0 并输出,然后右移 1 以除以 2.但是位以错误的顺序返回(反转),所以我想在开始之前反转整数中的位顺序. 有没有简单的方法来做到这一点? 示例:所以如果给我 unsigned int 10 = 1010 while (x not eq 0)如果 (x & 1)输出一个'1'别的输出一个'0' ..
发布时间:2022-01-09 19:09:15 其他开发

用于计数位或找到最右边|最左边的高效按位运算

给定一个无符号整数,我必须执行以下操作: 计算设置为 1 的位数 查找最左边 1 位的索引 查找最右边 1 位的索引 (操作不应依赖于架构). 我已经使用按位移位完成了此操作,但我必须遍历几乎所有位(es.32).例如,计数 1: 无符号整数= ...;而(数字!= 0){如果((数字和0x01)!= 0)++计数;数字>>=1;} 其他操作类似 所以我的问题是:有 ..
发布时间:2022-01-09 19:09:07 C/C++开发

移位运算符(<<,>>)在 C 中是算术还是逻辑?

在 C 中,移位运算符(>)是算术还是逻辑? 解决方案 根据K&R 第 2 版 对于有符号值的右移,结果取决于实现. Wikipedia 说 C/C++“通常"对有符号值实现算术移位. 基本上你需要测试你的编译器或者不依赖它.我对当前 MS C++ 编译器的 VS2008 帮助说他们的编译器进行了算术移位. ..
发布时间:2022-01-09 18:58:58 其他开发

按位运算和使用

考虑这段代码: x = 1 # 0001x 我可以理解 Python(和其他语言)中的算术运算符,但我从来没有很好地理解“按位"运算符.在上面的示例中(来自 Python 书籍),我了解左移,但不了解其他两个. 另外,按位运算符实际用于什么?我会很感激一些例子. 解决方案 位运算符是处理多位值的运算符,但从概念上讲是一次一位. AND 只有当 两个 的输入都为 1 时才为 ..
发布时间:2022-01-09 18:58:12 Python

什么是“2的补码"?

我正在学习计算机系统课程,并且一直在挣扎,部分原因是 二的补码.我想理解它,但我读过的所有内容并没有为我带来图片.我已阅读 维基百科文章 和其他各种文章,包括 我的教科书. 因此,我想开始这篇社区 wiki 帖子,以定义什么是二进制补码、如何使用它以及它如何在强制转换等操作期间影响数字(从有符号到无符号,反之亦然), 按位运算和位移运算. 我希望的是一个清晰简洁的定义,程序员很容易理解 ..

如何手动(按位)执行(float)x?

现在,这是我应该实现的函数的函数头: /** float_from_int - 返回表达式 (float) x 的位级等价物* 结果以 unsigned int 形式返回,但是* 它将被解释为 a 的位级表示* 单精度浮点值.*合法操作:任何整数/无符号操作,包括.||, &&.如果,同时* 最大操作数:30* 评分:4*/无符号 float_from_int(int x) {...} 我们不 ..
发布时间:2022-01-09 10:44:51 其他开发

使用按位运算将 Int 转换为 Float 或将 Float 转换为 Int(软件浮点)

我想知道您是否可以帮助解释将整数转换为浮点数或将浮点数转换为整数的过程.对于我的课程,我们将仅使用位运算符来执行此操作,但我认为对从类型到类型的强制转换的深刻理解将在这个阶段帮助我更多. 据我目前所知,要使 int 变为浮点数,您必须将整数转换为二进制,通过找到有效数、指数和小数来标准化整数的值,然后从那里输出浮点值? 至于float转int,你得把值分成有效数、指数和小数,然后把上面 ..
发布时间:2022-01-09 10:35:34 其他开发

在C中将float转换为int(按位)

给定代表 IEEE 754 浮点数的 32 位,如何将数字转换为整数,在表示上使用整数或位操作(而不是使用机器指令或编译器操作进行转换)? 我有以下功能,但在某些情况下会失败: 输入:int x(包含 IEEE 754 格式的 32 位单精度数) if(x == 0) return x;无符号整数符号位 = 0;无符号整数 absX = (无符号整数)x;如果 (x 解决方案 ..
发布时间:2022-01-09 10:24:42 其他开发

<<= 运算符在 Java 中是什么意思?

您能否解释一下来自 HashMap 构造函数 特别是这一行 容量= initialCapacity198 整数容量 = 1;199 而(容量 解决方案 相当于capacity = capacity . 该操作将容量的位向左移动一位,相当于乘以 2. 您发布的特定代码找到大于 initialCapacity 的 2 的最小幂. 所以如果 ..
发布时间:2022-01-08 14:34:28 Java开发