我正在阅读关于位域的 Wikipedia 条目,看到如何使用二进制数来表示主要的 colors 并使用按位或 ( | ) 运算符组合它们。 我想检查一种颜色是否包含在另一种颜色中。 我明白为什么会这样,但是是否有按位运算或其组合可以达到我想要的结果? ...
我正在阅读关于位域的 Wikipedia 条目,看到如何使用二进制数来表示主要的 colors 并使用按位或 ( | ) 运算符组合它们。 我想检查一种颜色是否包含在另一种颜色中。 我明白为什么会这样,但是是否有按位运算或其组合可以达到我想要的结果? ...
给定一个位掩码(设置了 M 位,即 popcount(bit_mask) == M),我想生成 M 个不同的位掩码,这些位掩码有 1 个设置位(给定的位掩码)切换。 上述问题归结为当前标题“如何重置位掩码的第 N 个设置位” 对于位掩码 0xE7 (popcount(0xE7) == 6),将生成 ...
我有一个非常基本的问题。 假设我有两个变量(uint16_t a,uint16_t b)并且在 memory 中它们彼此相邻对齐,例如 a=> 0x0 => 0x15 和 b=> 0x16 到 0x31 让我们假设 a = 0, b = 65535, 谢谢 ...
这个问题是我的编码 class 中一个更大的编码项目的一部分,介绍 C。该项目的目标是习惯位操作和浮点数。 这样做,在限制条件下会出现一些问题。 这是这个问题: 如你所见,对于他的问题,我只能用 | 和<<。 还有一些其他的假设也没有在这个问题中列出。 他们是; 没有大于 0xFF 的常 ...
作为我编码 class 的第一个大型编码项目的一部分,介绍了 C,提出了以下问题,请注意限制: 到目前为止,这是我的代码: 当我通过检查软件运行这段代码时,我得到了这个错误: 此作业的目的是学习浮点和位操作。 因此,如果您能解释我哪里出了问题,以及我该如何解决,我将不胜感激。 另外,是的,我知道,在 ...
作为我的编码 class 的一部分,这是对 C 的介绍,我正在从事一个处理受限位操作的编码项目。 特别是在这个问题上,我被卡住了,因为我不知道如何解决我的错误。 除了列出的合法操作外,我不能使用任何语句,如 do、if、while 或 else。 我也不允许转换为其他数据类型。这包括使用无符号。 ...
编者注:这是来自 CS:APP Data Lab 的一个测验,其目的是教授 2 的补码 integer 表示(所以请不要评论 C 糟糕的做法)。 对 ISO C 有额外的假设和限制: int是32位,用2的补码表示签名 integer 溢出环绕 ( -fwrapv ) 右移是有符号类型的算术运算 ...
对于这个问题,它要求如果参数大于 7 则返回 1,否则返回 0。 例如,如果 x 为 8,则 function 将返回 1。如果 x 为 7,则 function 将返回 0。 唯一允许的合法运算符是 (, ~ & ^ | + << >>),它禁止使用任何其他内容, ...
我们给了一个数字,我们必须以二进制形式翻转它的 0 和 1,翻转后我们必须写出翻转二进制数的结果十进制数。 例如 - 输入:n = 5 Output: 2 Reason- 5 在二进制中是“101”,二进制中的补码是“010”,即 base-10 中的 2。 我的尝试- 我的输出 - 235 111 ...
认为:No = 77 77 in binary [32 bits] : 0000 0000 0000 0000 0000 0000 0100 1101 我必须交换第一个和最后一个半字节:i.e : 1101 0000 0000 0000 0000 0000 0 ...
写一个 function 交换指针 b 指向的字节的每个半字节中的最高位。 (即0bAxxxBxxx -> 0bBxxxAxxx )。 我有一个预定义的 function 这个原型: void swapBits(uint8_t* b); 我想出的解决方案不起作用 - ...
如何对 python 中的两个数字进行逻辑 NAND? 简单的例子。 假设我有一个数字 (0xFF),我想要一个掩码值为 0x5 的逻辑 NAND。 我不是在这里重新发明轮子,这看起来应该很容易完成,但我很困惑,我在网上找不到任何解决方案。 我可以遍历数字并在每个位 position 处执行“no ...
如何将BYTES值转换为INT ? 例如,位运算, | , ^ , & , >> , <<是在BYTES和INT上定义的,因此以下两者都有效: 有没有一种方法可以将BYTES值转换为INT ,例如,我认为如果是小端数字UINT32 ,我相信b'a的计算结果为97 ...
假设我有两个uint16_t[4] arrays, a和b 。 这些 arrays 中的每个 integer 都在 [0, 16383] 范围内,因此未设置位 14 和 15。 然后我有一些代码可以找到每个i的a[i]和b[i]中的最小值和最大值: 假设出于某种原因我不能/不会使用 SIMD,但我 ...
我正在尝试制作一个 function,它从字节数组中提取位并从中返回十进制 output。 这些是我为此使用的功能。 例如,我会这样称呼它: 在大多数情况下,此功能在位(开始和结束)时工作正常。 但是当我尝试读取数据位于两个不同字节中的位时,它会失败。 这是我将使用的块的一些视图: 例如: 这有效并 ...
我有以下问题:我在 C++ 中有一个十六进制数(数据类型:std::uint64_t),十六进制数包含从 1 到给定 n 的所有数字。 现在的问题是旋转十六进制数的前 k 位,例如: hex = 0x436512, k = 3 --> 0x634512 我已经尝试将十六进制数分成两部分,例如 ...
我有以下问题:我在 C++ 中有一个十六进制数(数据类型:std::uint64_t),十六进制数包含从 1 到给定 n 的所有数字。 我们还给出了另一个数字 d <= n。 是否可以从大于或等于 n 的十六进制数的所有数字中减去 1? 这是我所期望的示例:hex = 0x43512, d ...
我想在 C++ 中获得 n 位的最高数字。我已经编写了这段代码,但也许有更有效的方法。int A = 22; // 10110 int max = pow(2, (int) log2(A) + 1) - 1; // returns 31 (11111) 此代码计算 A 的位数的 2 次方并减去 ...
我目前正在计算每个字节 32 位的字节缓冲区的校验和,我必须为字节缓冲区的每个组件(某些位置除外)计算两个校验和,32 位 unint sum 和 32 位 uint xor。 总和按预期工作,但异或给了我一个奇怪的值。 我从 xor 得到的值是-58679487并且当应用二进制补码时我得到5867 ...
考虑这个简单的例子: 为什么 output 为零? 使用unsigned long long int (sizeof = 8),64 位机器,操作系统:Fedora 37、gcc (GCC) 12.2.1 20221121 (Red Hat 12.2.1-4),以及使用或不使用 m64 标志的编译 ...