bit-manipulation相关内容

反转 Python 整数的位

给定一个十进制整数(例如 65),如何反转 Python 中的底层位?即以下操作: 65 → 01000001 → 10000010 → 130 看来这个任务可以分解为三个步骤: 将十进制整数转换为二进制表示 反转位 转换回十进制 第 2 步和第 3 步看起来非常简单(请参阅 this 和 this SO 问题与步骤#2) 相关,但我被困在步骤#1.第 1 步的问题是检索完整的 ..
发布时间:2022-01-14 14:35:51 Python

Javascript 中的位与 64 位整数

我正在寻找一种在 JavaScript 中对 64 位整数执行按位与的方法. JavaScript 会将其所有双精度值转换为带符号的 32 位整数以执行按位运算 (这里有详细信息). 解决方案 Javascript 将所有数字表示为 64 位 双精度 IEEE 754 浮点数(参见 ECMAscript 规范,第 8.5 节.)可以精确编码最大为 2^53 的所有正整数.较大的整数会 ..
发布时间:2022-01-14 14:16:27 前端开发

SIMD 对 64 位 * 64 位到 128 位的无符号乘法进行签名

我创建了一个使用 SIMD 执行 64 位 * 64 位到 128 位的函数.目前我已经使用 SSE2(实际上是 SSE4.1)实现了它.这意味着它同时做两个 64b*64b 到 128b 的产品.同样的想法可以扩展到 AVX2 或 AVX512,同时提供四个或八个 64b*64 到 128b 产品.我的算法基于 http://www.hackersdelight.org/hdcodetxt/mu ..
发布时间:2022-01-14 14:06:30 其他开发

在两个大整数相乘期间捕获和计算溢出

我正在寻找一种有效(可选标准、优雅且易于实现)的解决方案来乘以相对较大的数字,并将结果存储到一个或多个整数中: 假设我有两个这样声明的 64 位整数: uint64_t a = xxx, b = yyy; 当我执行 a * b 时,如何检测操作是否导致溢出并在这种情况下将进位存储在某处? 请注意,我不想使用任何大型库,因为我对存储数字的方式有限制. 解决方案 1.检测溢出: ..

位域如何与字符类型一起使用?

结构统计{字符顶部:1;字符底部:1;字符侧:2;} 我的统计; 我见过这种带有整数的格式,但是上面的 char 位字段是如何工作的,它代表什么? 谢谢. 解决方案 char 位域的工作方式与 int 相同,只是基类型是 8 位宽,而不是 32 位.所以你会得到一个struct stats,它有1个字节的大小,3个成员变量,总共占用4位. ..
发布时间:2022-01-12 20:26:29 C/C++开发

在 C++ 中使用位运算符将 4 个字符更改为 int

我必须做的是以二进制模式打开一个文件,其中包含旨在被解释为整数的存储数据.我见过其他示例,例如 Stackoverflow-Reading “integer" size bytes from一个 char* 数组. 但我想尝试采用不同的方法(我可能只是固执或愚蠢:/).我首先在十六进制编辑器中创建了一个简单的二进制文件,内容如下. 00 00 00 47 00 00 00 17 00 00 ..
发布时间:2022-01-12 20:23:14 C/C++开发

为什么 XOR 是组合哈希的默认方式?

假设你有两个散列 H(A) 和 H(B) 并且你想组合它们.我读过结合两个哈希的好方法是 XOR 他们,例如XOR(H(A), H(B)). 我发现的最佳解释是在这些 哈希函数指南中简要介绍的::p>对两个具有大致随机分布的数字进行异或运算会导致另一个数字仍然具有大致随机分布*,但现在取决于这两个值. ... * 在要组合的两个数字的每个位上,如果两个位相等,则输出 0,否则输出 1.换 ..
发布时间:2022-01-10 09:40:00 其他开发

计数 int 中使用的位

如果你有二进制数 10110,我怎样才能让它返回 5?例如一个数字,它告诉我们使用了多少位?下面列出了一些类似的例子: 101 应该返回 3 000000011 应该返回 2 11100 应该返回 5 101010101 应该返回 9 如何在 Java 中以最简单的方式获得它?我想出了以下方法,但我可以做得更快吗: public static int getBitLength( ..
发布时间:2022-01-09 19:56:42 Java开发

在 C 位中,乘以 3 并除以 16

我的一个朋友遇到了这些谜题,而我一直在想这个.问题来了,给你一个数字,你想返回这个数字乘以 3,然后除以 16,四舍五入为 0.应该很容易.捕获?您只能使用 !〜&^ |+ > 运算符和其中只有 12 个的组合. int mult(int x){//这里有一些代码...返回 y;} 我的尝试是: int hold = x + x + x;整数保持1 = 8;保持1 = 保持1 &抓住;保持 ..
发布时间:2022-01-09 19:55:18 其他开发

Int 到二进制转换说明

我的问题基于这篇文章:Decimal to Binary,它是选择的解决方案. 我可以让选择的答案代码工作,但它只适用于 5 位.如何修改此代码以适用于更大的数字,比如 8 位? 我尝试将第一行中的字符偏移量从 5 调整为 8,但没有成功. void getBin(int num, char *str){*(str+5) = '\0';整数掩码 = 0x10 并使用给定的代码进行 ..
发布时间:2022-01-09 19:50:02 其他开发

从 int 到 char 的赋值如何在 C 中工作?

在 C 中将 int 分配给 char 会发生什么?它总是忽略左边的多余位吗? 示例(4 字节 int): 无符号字符 c = 0;无符号整数 i = 500;c = 我;//c 是 244c = i >24;//c 是 244i = i >24;//我是244 在二进制中,500 是 111110100,244 是 11110100. 解决方案 通常情况下, ..
发布时间:2022-01-09 19:48:39 其他开发

计算没有循环的给定数字的负数表示

您能否就以下函数计算 negabinary 的原因提供令人信服的解释或数学证明 给定数字的表示? function quickNegabinary(number) {var 掩码 = 0xAAAAAAA;返回 ((数字 + 掩码) ^ 掩码).toString(2);} 解决方案 负数表示法 负二进制表示法使用基数 -2.这意味着,就像在每个具有负基数的数字系统中一样,每隔一个位都有一 ..

将有符号整数除以 2 的幂

我正在研究一种仅使用二元运算符(> + ^ ~ & | !)将有符号整数除以 2 的幂的方法,结果必须向 0 舍入.我在 Stackoverflow 上也遇到过 这个问题,但是,我无法理解它为什么起作用.这是解决方案: int divideByPowerOf2(int x, int n){返回 (x + ((x >> 31) & ((1 >n;} 我了解 x >> ..
发布时间:2022-01-09 19:43:55 其他开发

仅使用位运算符以二进制执行算术运算

可能重复: 如何仅使用乘法和除法位移和加法? 我必须编写函数来执行二进制减法、乘法和除法,而不使用除循环控制之外的任何算术运算符.我之前只用 Java 编写过代码,所以我很难理解这一点. 从减法开始,我需要用原型写一个函数 int bsub(int x, int y) 我知道我需要将 y 转换为二进制补码以使其为负并将其添加到 x,但我只知道如何通过使用补码 ~ 运算符并加 1 ..
发布时间:2022-01-09 19:42:12 其他开发