bit-manipulation 相关问题

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

执行位操作以交换相邻的半字节[关闭]

在C语言中,如何对int进行位操作以交换相邻的半字节? 给我的输入是 0xDEAD,预期输出是 0xEDDA。

回答 1 投票 0

Leetcode:201 给定表示范围 [left, right] 的 left 和 right 两个整数,返回该范围内所有数字的按位与,包括

为什么会失败,我们是否可以在相同的逻辑中添加任何其他内容以使其正确。 它在左=6右=7处失败 这是代码片段: 类解决方案{ 公共静态 int log2(int N)...

回答 1 投票 0

C 中的按位归约运算符

C 中是否有像 Verilog 中那样的一元按位归约运算符? 就像在 Verilog 中一样,我们有: $display("&4'b1001 = %b",(&4'b1001)); 以及函数 a 的输出...

回答 2 投票 0

如何找到最高有效位(MSB)

我想知道一个字节的第一位是什么值。 例如: 我有字节 m = (字节) 0x8C; 我怎么知道第一位是 1 还是 0 ? 有人可以帮我吗?

回答 7 投票 0


我想执行位操作,使 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

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