bit-manipulation相关内容

有没有公式来计算浮点数中指数或有效位的位数?

最近,我对使用浮点数的位移位来进行一些快速计算很感兴趣。 为了使它们以更通用的方式工作,我希望使我的函数使用不同的浮点类型,可能是通过模板,这些浮点类型不仅限于float和double,还包括";Halfwidth";或";四倍宽&Quot;浮点数等等。 然后我注意到: - Half --- 5 exponent bits --- 10 sig ..
发布时间:2022-03-01 17:59:45 C/C++开发

关闭数字最左边的非零位

如何关闭O(1)中最左边的non-zero位? 例如 n = 366 (base 10) = 101101110 (in base 2) 关闭最左边的non-zero位后,数字看起来像001101110 n将始终>0 推荐答案 如果您在任何情况下都坚持O(1),immintrin.h中定义的英特尔本征函数_bit_scan_reverse()是否有硬件在整数中找到 ..
发布时间:2022-03-01 17:56:46 C/C++开发

如何在DART中进行按位无符号(填零)右移?

如何在DART中执行按位无符号右移/填零右移? 类似这样的内容,例如: foo >>> 2 推荐答案 填零右移位需要特定的整数大小。由于DART中的整数具有任意精度,因此“>;>;>;”运算符在那里没有意义。 模拟填零右移的最简单方法是先进行位和数字。 示例: (foo & 0xFFFF) >> 2 // 16 bit zero-fill shi ..
发布时间:2022-03-01 17:53:21 其他开发

逐位检查标志是否存在

是否有通常用于检查int/其他数据类型中是否存在标志的方法?我想出了这样的结果: if ((host&flagtocheckfor)==flagtocheckfor) 哪种方法可以很好地工作-但是,它是设置标志的常用方法,这是通常检查标志的方式吗?还是有更简明的方法? 推荐答案 这与在大多数支持位标志的语言中检查位标志的方式完全相同。 例如: #define BIT_ ..
发布时间:2022-03-01 17:49:59 其他开发

戈朗的&q;&;^&q;运算符是什么?

我真的不能在Google上搜索名称和NOT,并获得任何有用的结果,这个运算符到底是什么,我如何在像C这样的语言中做到这一点?我检查了规范,里面没有什么帮助,只有一个列表说它是&^(并且不是)。 推荐答案 Go表达式x &^ y的C等价物正好是x & ~y。字面意思是“xAND(按位NOT OFy)”。 arithmetic operators section of the spec中 ..
发布时间:2022-03-01 17:46:55 其他开发

十六进制数的位异或运算

如何在Python中对十六进制数进行异或运算?例如,我想对'ABCD'和'12EF'进行异或运算,答案应该是'B922'。 我使用了下面的代码,但它给出了错误的结果。 # xor two strings of different lengths def strxor(a, b): if len(a) > len(b): return "".join(["%s" ..
发布时间:2022-02-25 15:37:29 Python

C中位反转的有效算法(从MSB->LSB到LSB->MSB)

实现以下目标的最有效算法是什么: 0010 0000 =>0000 0100 转换是从 MSB->LSB 到 LSB->MSB.所有位必须颠倒;也就是说,这不是字节顺序交换. 解决方案 注意:以下所有算法都是 C 语言,但应该可以移植到您选择的语言(别看我当他们不那么快时:) 选项 内存不足(32 位 int,32 位机器)(来自 这里): 无符号整数反向(注册无 ..
发布时间:2022-01-31 09:56:40 其他开发

如何从 8 个布尔值中创建一个字节(反之亦然)?

我有 8 个 bool 变量,我想将它们“合并"成一个字节. 有没有简单/首选的方法来做到这一点? 反过来,将一个字节解码为 8 个独立的布尔值怎么样? 我进来假设这不是一个不合理的问题,但由于我无法通过 Google 找到相关文档,这可能是另一种“你的直觉都错了"的案例. 解决方案 艰难的路: unsigned char ToByte(bool b[8]){无符号字符 ..
发布时间:2022-01-19 16:50:57 C/C++开发

钳制真实(固定/浮点)值的最快方法?

有没有比使用 if 语句或三元运算符更有效的方法来限制实数?我想为双打和 32 位定点实现 (16.16) 执行此操作.我不是要求可以处理这两种情况的代码;它们将在单独的函数中处理. 显然,我可以这样做: 双钳位A;双a =计算();钳位A = a >MY_MAX ?MY_MAX:一个;钳位A = a ..
发布时间:2022-01-17 09:09:01 其他开发

为什么选择“010"?等于 8?

我的简单问题是为什么: System.out.println(010|4); 打印“12"?我了解按位或运算符,但为什么“010"等于 8?肯定不是恭维2的通知,那这个数字怎么解码呢? 解决方案 看看Java 语言规范,第 3.10.1 章整数文字 整数字面量可以用十进制(以 10 为底)、十六进制表示(以 16 为底)、八进制(以 8 为底) 或二进制(以 2 为底). ..
发布时间:2022-01-15 10:58:42 Java开发

在javascript中使用按位或转换为整数

我们可以做以下转换: var a = "129.13"|0,//变为 129变量 b = 11.12|0;//变成 11变量 c = "112"|0;//变成 112 这似乎可行,但不确定这是否是标准的 JS 功能.有谁知道这是否可以安全地用于将字符串和小数转换为整数? 解决方案 是的,这是标准行为.位运算符仅对整数进行运算,因此它们将给出的任何数字转换为有符号的 32 位整数. ..
发布时间:2022-01-14 14:49:20 前端开发

不使用 64 位数据类型的 32 位有符号整数乘法

我想在不使用 64 位数据类型的情况下进行 32 位有符号整数乘法.我的输入采用 Q1.31(两者)格式. input1 = A32 (Ah Al) - A32 的上半部分、下半部分input2 = B32 (Bh Bl) - B32 的高、低半部分 结果应该是 Q1.31 格式,留下溢出的情况. 我需要 C 代码.请同时提供格式说明. 解决方案 有符号 Q1.31 格式是一种完 ..
发布时间:2022-01-14 14:46:14 其他开发