bit-manipulation 相关问题

个别位的操纵。使用的运算符可以包括按位AND,OR,XOR,NOT,左移和右移。


我想执行位操作,使 int input = 0xDEAD 变为 0xEDDA。我如何用 C 语言做到这一点?

我的输入是int,预期输出必须是int,我可以看到我们正在交换相邻位。

回答 1 投票 0

使用按位运算符对不同模块的用户角色权限

所以我有一个具有多个模块的应用程序(将模块视为不同的页面),每个模块都有一组权限;查看、添加、编辑、删除 我希望每个用户角色都拥有以下权限...

回答 3 投票 0

C ASCII 到 Hex (atoh) 函数

我希望开发一个函数,将一系列 ASCII 字符(以其各自的十六进制表示形式)转换为单个十六进制值。例如,此函数的输入字符串可能是 {0...

回答 1 投票 0

有符号整数比较,无需比较运算符或加宽

我正在寻找一个有符号整数比较函数 cmp(x: Int, y: Int) -> Int ,它不使用任何比较运算符(<, <=, >、>=、<=>等),不使用扩大到 a

回答 1 投票 0

将跨越多个无符号长整型表示的两个二进制数相加的高效算法

我想在这个特定的框架中对两个二进制数求和,我将参考C++的编码语法。 64 个二进制数被编码为无符号 long long int 向量。 矢量 我想在这个特定的框架中对两个二进制数求和,我将参考C++的编码语法。 64 个二进制数被编码为无符号 long long int 向量。 vector<unsigned long long int> a; 其中 v[j] 的第 i 位等于第 i 个数的第 j 位,i = 0, ..., 64-1。 现在让我们考虑两个 64 位数字的集合 vector<unsigned long long int> a, b; 我想通过按位运算,将a中编码的64个数字与b中编码的64个数字一次性求和。例如,我想将a中编码的第0个数字与b中编码的第0个数字相加,将a中编码的第1个数字与b中编码的第1个数字相加,等等,然后写入结果变成一个 vector<unsigned long long int> c; 最快的方法是什么?我似乎记得必须使用二叉树结构,但我不确定。 添加一对转置整数(每个逻辑整数物理存储在位矩阵的列中)可以像这样完成: #include <cstdint> #include <vector> #include <cstddef> using std::uint64_t; using std::size_t; std::vector<uint64_t> add_transposed_integers( const std::vector<uint64_t> &a, const std::vector<uint64_t> &b) { size_t n = a.size(); std::vector<uint64_t> c(n); uint64_t carry = 0; for (size_t i = 0; i < n; i++) { uint64_t sum = (a[i] ^ b[i]) ^ carry; carry = (a[i] & b[i]) | (carry & (a[i] ^ b[i])); c[i] = sum; } return c; } 这里的按位逻辑只是纹波进位加法。 我假设 a、b 和 c 都应该具有相同的位数(这意味着:它们的向量都具有相同的长度)。如果不是这样,您可以轻松地进行一些修改。 我并不认为这是最快的方法,但让它更快并不容易。例如,您可能会考虑 SIMD,但进位传播确实很奇怪,您需要一些更高级的加法算法,例如 Kogge-Stone,它可以支持一些并行性,但总共会花费更多的操作。

回答 1 投票 0

如何根据计数翻转数字的位

所以在下面的Python脚本A中,根据geeksforgeeks.org,这个脚本是告诉我要翻转的位数以将a转换为b,所以在我复制计数结果后,我尝试创建自己的

回答 1 投票 0

将 32 位大端有符号整数转换为有符号小端整数

我有一些需要转换的无符号 32 位大端整数,一旦找到正确的标头,这就变得非常简单: #包括 ... be32toh(some_int); 然而,恩迪亚...

回答 2 投票 0

在python中获取二进制掩码

在 python 中获取 int 的最简单/最快的方法是什么,它可以用二进制的所有 1 表示。这是为了生成 N 位掩码。 例如: 如果总位数为 4,则二进制“1111”或...

回答 1 投票 0

C# 中的按位“~”运算符

考虑这个单元测试代码: [测试方法] 公共无效RunNotTest() { // 10101100 = 128 + 32 + 8 + 4 = 172 字节 b = 172; // 01010011 = 64 + 16 + 2 + 1 = 83 ...

回答 2 投票 0

解释左移在 Java 中的工作原理[重复]

朋友们。 你能解释一下为什么下面的程序代码向控制台输出值-32吗? int 数字 = 0xFFFFFFE; for(int i=0; i < 4; i++) { num = num << 1; System.out.println(num);...

回答 1 投票 0

如何将面具咬成数字

如何更改无符号字节(或更大)中的位范围,而不关心这些范围内的当前位是什么。 0bXXXX'XXXX 我想将位置 2,3,4 处的位设置为 0b101,所以最后...

回答 1 投票 0

检查C/C++中最低有效位(LSB)和最高有效位(MSB)的值

我需要检查C/C++中整数的最低有效位(LSB)和最高有效位(MSB)的值。我该怎么做?

回答 6 投票 0

如何从文件中连续读取N个字节直到EOF

我正在尝试使用 Wave 到 Base 64 转换器程序。 我正在尝试以下代码片段: 向量 (3); std::string 输出 = "abcd"; //四个字母的垃圾值作为初始值...

回答 1 投票 0

将一个int和2个short打包成一个long

我无法将 int、short、short 打包成 long。 这是我到目前为止所得到的: int p = 123456; 短x = -567; 短 y = 789; 长 l = (((长) p) << 32) | (x & 0xffff0000L) |...

回答 1 投票 0

找到具有相同权重的最接近的整数

我正在尝试解决这个问题: 编写一个程序,以非负整数 x 作为输入,并返回一个不等于 x 的数字 y,但具有相同的权重(相同的位数设置为 1...

回答 1 投票 0

什么是异或和?

我不确定这个术语的准确定义。 我知道按位异或运算是逐位进行的,并按相应位的位置进行异或。这个结果被称为“XO...

回答 1 投票 0

我需要帮助将此 ppc 指令翻译为 c++

有人可以给我看一个 C++ 的例子吗?我正在尝试练习我的汇编语言技能,从我得到的语言是 powerpc,我们正在寻找 44 位移位到...

回答 2 投票 0

为什么要用“&1”检查负数

当我尝试重构 LeetCode 问题的代码时,刚刚遇到了这个问题。问题是比较一个正整数是否小于另一个整数的绝对值。这是...

回答 1 投票 0

有没有一种有效的方法可以使用SIMD内在函数获取SIMD寄存器中的第一个非零元素?

如标题所示,如果一个256位SIMD寄存器是: 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 如何有效地获取第一个非零元素的索引(即第一个 1 的索引 2)?最

回答 2 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.