bit-manipulation相关内容

如何使用 x86 SIMD 有效地将 8 位位图转换为 0/1 整数数组

我想将 8 位整数转换为大小为 8 的数组,每个值都包含一个整数的位值. 例如:我有 int8_t x = 8; 我想把它转换成 int8_t array_x = {0,0,0,0,1,0,0,0}; 这必须有效地完成,因为此计算是信号处理块的一部分.有没有一种有效的方法来做到这一点?我确实检查了混合说明.当数组元素大小为 8 位时,它不符合我的要求.开发平台为AMD Ryzen. ..
发布时间:2022-01-06 12:32:10 其他开发

SIMD 用无符号乘法签名,用于 64 位 * 64 位到 128 位

我创建了一个使用 SIMD 将 64 位 * 64 位转换为 128 位的函数.目前我已经使用 SSE2(实际上是 SSE4.1)实现了它.这意味着它同时做两个 64b*64b 到 128b 的产品.相同的想法可以扩展到 AVX2 或 AVX512,同时提供四个或八个 64b*64 到 128b 产品.我的算法基于 http://www.hackersdelight.org/hdcodetxt/m ..
发布时间:2022-01-06 12:23:04 其他开发

快速 24 位数组 ->32位数组转换?

快速总结: 我有一个 24 位值的数组.关于如何将单个 24 位数组元素快速扩展为 32 位元素的任何建议? 详细信息: 我正在使用 DirectX 10 中的像素着色器实时处理传入的视频帧.一个绊脚石是我的帧来自具有 24 位像素(YUV 或 RGB 图像)的捕获硬件,但 DX10 需要32 位像素纹理.因此,我必须将 24 位值扩展为 32 位,然后才能将它们加载到 GPU ..
发布时间:2022-01-06 11:37:52 其他开发

如何手动(按位)执行(浮点)x?

现在,这是我应该实现的函数的函数头: /** float_from_int - 返回位级等价的表达式 (float) x* 结果以无符号整数形式返回,但* 它被解释为一个的位级表示* 单精度浮点值.* 合法操作:任何整数/无符号操作,包括.||,&&.还有如果,而* 最大操作数:30* 评分:4*/无符号 float_from_int(int x) {...} 我们不允许进行浮动操作或任何类型 ..
发布时间:2021-12-31 21:47:15 其他开发

在 Visual Studio 2015 中的符号扩展操作数上使用的按位或运算符

我刚刚尝试安装 Visual Studio 2015,在尝试编译旧项目时,收到警告 CS0675 用于符号扩展操作数的按位或运算符;考虑首先转换为较小的无符号类型 对于一段在 Visual Studio 2013 中编译时没有给出相同警告的代码.我发现重现所需的只是这段非常简单的代码: short a = 0;int b = 0;a |=(短)b; 现在,我已经阅读了 这个问题,我 ..
发布时间:2021-12-30 18:01:14 C#/.NET

计算 Int32 中的前导零

如何计算 Int32 中的前导零?所以我想要做的是编写一个函数,如果我的输入是 2,它会返回 30,因为在二进制中我有 000...0000000000010. 解决方案 注意 使用 dotnet core >=3.0?看看这里. 我们以数字 20 为例.它可以用二进制表示如下: 00000000000000000000000000010100 首先我们“涂抹"通过右移和按位或 ..
发布时间:2021-12-30 15:55:40 C#/.NET

波浪号在表达式之前有什么作用?

var attr = ~'input,textarea'.indexOf( target.tagName.toLowerCase() )?'价值':'内部HTML' 我在一个答案中看到过,以前从未见过. 什么意思? 解决方案 ~ 是一个 按位运算符 翻转其操作数中的所有位. 例如,如果您的号码是 1,则其 IEEE 754 浮点数(JavaScript 如何处理数字)将是.. ..
发布时间:2021-12-29 18:55:43 前端开发

什么是按位或 |运营商做什么?

我正在阅读有关标志枚举和按位运算符的内容,并遇到了以下代码: 枚举文件{读取 = 1,写 = 2,读写 = 读 |写} 我在某处阅读了有关为什么有包含性或声明以及如何不能有 & 的内容,但找不到该文章.有人可以刷新我的记忆并解释原因吗? 另外,我怎么说和/或?例如.如果 dropdown1="hello" 和/或 dropdown2="hello".... 谢谢 解决方案 ..
发布时间:2021-12-29 16:43:44 C#/.NET

我应该使用#define、enum 还是const?

在我正在处理的 C++ 项目中,我有一个 flag 类型的值,它可以有四个值.这四个标志可以组合在一起.标志描述数据库中的记录,可以是: 新记录 删除记录 修改记录 现有记录 现在,对于我希望保留此属性的每条记录,我可以使用枚举: enum { xNew, xDeleted, xModified, xExisting } 但是,在代码的其他地方,我需要选择哪些记录对用户可见, ..
发布时间:2021-12-29 16:10:55 C/C++开发

枚举上最常见的 C# 按位运算

在我的一生中,我不记得如何在位域中设置、删除、切换或测试位.要么我不确定,要么我把它们混在一起,因为我很少需要这些.因此,最好有一份“备忘单". 例如: flags = flags |FlagsEnum.Bit4;//设置位 4. 或 if ((flags & FlagsEnum.Bit4)) == FlagsEnum.Bit4)//有没有更简洁的方法? 您能否举出所有其他常见操作的 ..
发布时间:2021-12-29 16:07:28 C#/.NET

为什么 XOR 是组合散列的默认方式?

假设您有两个散列 H(A) 和 H(B) 并且您想将它们组合起来.我读过结合两个散列的一个好方法是 XOR 它们,例如XOR(H(A), H(B)). 我找到的最好的解释在这些哈希函数指南中简要介绍::>对具有大致随机分布的两个数字进行异或会产生另一个仍然具有大致随机分布的数字*,但现在取决于这两个值. ... * 在要组合的两个数字的每一位,如果两位相等,则输出 0,否则输出 1.也就 ..
发布时间:2021-12-27 16:04:19 其他开发

字节数组的 Base-N 编码

几天前我遇到了这个 CodeReview 用于 Base-36 编码字节数组.然而,随后的答案并未涉及解码回字节数组,或者可能重用答案来执行不同基数(基数)的编码. 链接问题的答案使用 BigInteger.因此,就实现而言,可以对基数及其数字进行参数化. BigInteger 的问题在于,我们将输入视为假定的整数.然而,我们的输入,一个字节数组,只是一系列不透明的值. 如果字节 ..
发布时间:2021-12-27 15:59:33 C#/.NET

在 Javascript 中通过 Web 套接字发送和接收二进制数据?

可以在 Javascript 中通过 Web 套接字发送和接收二进制数据吗?例如,我可以使用 Web 套接字实现 SSH 客户端吗? 解决方案 下一个草案 (hybi-07) 正在大多数浏览器中实现,它将为协议和 API 添加内置的二进制支持. 然而,在此之前,WebSockets 有效负载被编码为 UTF-8.为了发送二进制数据,您必须使用某种方式将二进制数据编码为 UTF-8. ..
发布时间:2021-12-25 13:43:54 前端开发

C# 中的 OR-ing 字节给出 int

我有这个代码. byte dup = 0;Encoding.ASCII.GetString(new byte[] { (0x80 | dup) }); 当我尝试编译时,我得到: 不能隐式转换类型'int'到'字节'.显式转换存在(你缺少演员吗?) 为什么会这样?不应该|两个字节给出一个字节?以下两项工作,确保每个项目都是一个字节. Encoding.ASCII.GetString ..
发布时间:2021-12-25 13:27:54 C#/.NET

你如何在 Rust 中设置、清除和切换单个位?

如何在 Rust 中设置、清除和切换一点? 解决方案 与许多其他语言一样,按位运算符 &(按位与)、|(按位或), ^ (按位异或) 存在: fn main() {让 mut 字节:u8 = 0b0000_0000;字节 |= 0b0000_1000;//设置一点println!("0b{:08b}", 字节);字节 &= 0b1111_0111;//稍微取消设置println!("0b ..
发布时间:2021-12-25 09:36:58 其他开发

什么是零宽度位域

可能的重复: 零长度位域的实际使用 为什么有些结构有零宽度位域,为什么需要它? struct foo {输入:3;国际b:2;整数:0;//强制对齐到下一个边界.国际 c:4;国际 d:3;};int main(){int i = 0xFFFF;struct foo *f = (struct foo *)&i;printf("a=%d\nb=%d\nc=%d\nd=%d\n", f->a ..
发布时间:2021-12-23 17:29:35 其他开发

这是什么 asm 样式 "x |0"一些 javascript 程序员现在正在使用?

我见过一些对性能至关重要的 javascript 代码,例如 这个项目 上的代码使用与 0 的按位或运算.例如: GameBoyAdvanceCPU.prototype.write8 = 函数(地址,数据){地址 = 地址 |0;数据 = 数据 |0;this.memory.memoryWrite8(address | 0, data | 0); 我知道带有“|0"的楼层编号的用例,但这里的情 ..

确定设置了字节中的哪个位

我有一个 byte 用于 bitflags.我知道 byte 中的只有一个 位在任何给定时间被设置. 例如:unsigned char b = 0x20;//(00100000) 第六位设置 我目前使用以下循环来确定设置了哪个位: int getSetBitLocation(unsigned char b) {国际我= 0;而( !((b >> i++) & 0x01) ) { ;} ..
发布时间:2021-12-20 16:18:35 其他开发