bit-manipulation相关内容
最近,我对使用浮点数的位移位来进行一些快速计算很感兴趣。 为了使它们以更通用的方式工作,我希望使我的函数使用不同的浮点类型,可能是通过模板,这些浮点类型不仅限于float和double,还包括";Halfwidth";或";四倍宽&Quot;浮点数等等。 然后我注意到: - Half --- 5 exponent bits --- 10 sig
..
如何关闭O(1)中最左边的non-zero位? 例如 n = 366 (base 10) = 101101110 (in base 2) 关闭最左边的non-zero位后,数字看起来像001101110 n将始终>0 推荐答案 如果您在任何情况下都坚持O(1),immintrin.h中定义的英特尔本征函数_bit_scan_reverse()是否有硬件在整数中找到
..
如何在DART中执行按位无符号右移/填零右移? 类似这样的内容,例如: foo >>> 2 推荐答案 填零右移位需要特定的整数大小。由于DART中的整数具有任意精度,因此“>;>;>;”运算符在那里没有意义。 模拟填零右移的最简单方法是先进行位和数字。 示例: (foo & 0xFFFF) >> 2 // 16 bit zero-fill shi
..
是否有通常用于检查int/其他数据类型中是否存在标志的方法?我想出了这样的结果: if ((host&flagtocheckfor)==flagtocheckfor) 哪种方法可以很好地工作-但是,它是设置标志的常用方法,这是通常检查标志的方式吗?还是有更简明的方法? 推荐答案 这与在大多数支持位标志的语言中检查位标志的方式完全相同。 例如: #define BIT_
..
我真的不能在Google上搜索名称和NOT,并获得任何有用的结果,这个运算符到底是什么,我如何在像C这样的语言中做到这一点?我检查了规范,里面没有什么帮助,只有一个列表说它是&^(并且不是)。 推荐答案 Go表达式x &^ y的C等价物正好是x & ~y。字面意思是“xAND(按位NOT OFy)”。 arithmetic operators section of the spec中
..
如果我有一个标志数组,并且希望将它们与按位合取组合 ie: $foo = array(flag1, flag2); 进入 $bar = flag1 | flag2; PHP有没有什么好函数可以很好地为我做这件事? 推荐答案 array_reduce将为您将数组减少为单个值: $res = array_reduce($array, function($a,
..
我需要这样的函数: // return true if 'n' is a power of 2, e.g. // is_power_of_2(16) => true // is_power_of_2(3) => false bool is_power_of_2(int n); 有人能建议我怎么写这篇文章吗? 推荐答案 (n & (n - 1)) == 0最好。但是,请注意
..
如何在Python中对十六进制数进行异或运算?例如,我想对'ABCD'和'12EF'进行异或运算,答案应该是'B922'。 我使用了下面的代码,但它给出了错误的结果。 # xor two strings of different lengths def strxor(a, b): if len(a) > len(b): return "".join(["%s"
..
我正在研究子序列的算法。 语句的意思是什么: if (counter & (1
..
实现以下目标的最有效算法是什么: 0010 0000 =>0000 0100 转换是从 MSB->LSB 到 LSB->MSB.所有位必须颠倒;也就是说,这不是字节顺序交换. 解决方案 注意:以下所有算法都是 C 语言,但应该可以移植到您选择的语言(别看我当他们不那么快时:) 选项 内存不足(32 位 int,32 位机器)(来自 这里): 无符号整数反向(注册无
..
..
我想转换如下查询: 从 MyTable 中选择 BoolA、BoolB、BoolC、BoolD; 进入位掩码,其中位由上述值定义. 例如,如果 BoolA 和 BoolD 为真,我想要 1001 或 9. 我的想法是: 选择CASE WHEN BoolD THEN 2^0 ELSE 0 END +CASE WHEN BoolC THEN 2^1 ELSE 0 END +CASE
..
我有 8 个 bool 变量,我想将它们“合并"成一个字节. 有没有简单/首选的方法来做到这一点? 反过来,将一个字节解码为 8 个独立的布尔值怎么样? 我进来假设这不是一个不合理的问题,但由于我无法通过 Google 找到相关文档,这可能是另一种“你的直觉都错了"的案例. 解决方案 艰难的路: unsigned char ToByte(bool b[8]){无符号字符
..
如何在 JavaScript 中设置、清除、切换和检查位? 解决方案 获取位掩码: var 掩码 = 1
..
有没有比使用 if 语句或三元运算符更有效的方法来限制实数?我想为双打和 32 位定点实现 (16.16) 执行此操作.我不是要求可以处理这两种情况的代码;它们将在单独的函数中处理. 显然,我可以这样做: 双钳位A;双a =计算();钳位A = a >MY_MAX ?MY_MAX:一个;钳位A = a
..
在 C++ 中我有这样的代码. 静态 UInt32 角色(UInt32 值,UInt32 位){位&= 31;返回((值>(32-位)));}静态 UInt32 ror(UInt32 值,UInt32 位){位&= 31;返回((值>>位)|(值>"不能应用于“u
..
我的简单问题是为什么: System.out.println(010|4); 打印“12"?我了解按位或运算符,但为什么“010"等于 8?肯定不是恭维2的通知,那这个数字怎么解码呢? 解决方案 看看Java 语言规范,第 3.10.1 章整数文字 整数字面量可以用十进制(以 10 为底)、十六进制表示(以 16 为底)、八进制(以 8 为底) 或二进制(以 2 为底).
..
检查两个整数是否具有相同符号的最简单方法是什么?有什么简单的按位技巧吗? 解决方案 这是一个在 C/C++ 中工作的版本,它不依赖整数大小或存在溢出问题(即 x*y>=0 没有不工作) bool SameSign(int x, int y){返回 (x >= 0) ^ (y
..
我们可以做以下转换: var a = "129.13"|0,//变为 129变量 b = 11.12|0;//变成 11变量 c = "112"|0;//变成 112 这似乎可行,但不确定这是否是标准的 JS 功能.有谁知道这是否可以安全地用于将字符串和小数转换为整数? 解决方案 是的,这是标准行为.位运算符仅对整数进行运算,因此它们将给出的任何数字转换为有符号的 32 位整数.
..
我想在不使用 64 位数据类型的情况下进行 32 位有符号整数乘法.我的输入采用 Q1.31(两者)格式. input1 = A32 (Ah Al) - A32 的上半部分、下半部分input2 = B32 (Bh Bl) - B32 的高、低半部分 结果应该是 Q1.31 格式,留下溢出的情况. 我需要 C 代码.请同时提供格式说明. 解决方案 有符号 Q1.31 格式是一种完
..