41得票7回答
使用位运算符将多个值打包到一个整数中

我从来不擅长低级位操作。 我需要帮助理解以下位运算符的使用情况。考虑...int age, gender, height, packed_info; . . . // Assign values // Pack as AAAAAAA G HHHHHHH using shifts an...

30得票9回答
如何将8个布尔值转换为一个字节(以及反过来)?

我有8个bool变量,想要将它们"合并"成一个字节。 有没有简单/首选的方法可以做到这一点? 另一种方式如何,将一个字节解码为8个单独的布尔值? 我认为这不是一个不合理的问题,但由于我在Google上找不到相关的文档,可能是另一种那种"不行,你所有的直觉都是错的"情况。

17得票9回答
C++数据成员对齐与数组打包

在进行代码审查时,我看到了一些定义简单结构的代码:class foo { unsigned char a; unsigned char b; unsigned char c; } 另外,定义了一个这些对象的数组:foo listOfFoos[SOME_NUM]; 后来,这些结...

12得票7回答
整数数组的位压缩

我有一个整数数组,假设它们的类型为int64_t。现在,我知道每个整数只有前n位是有意义的(也就是说,我知道它们受到某些限制)。 最有效的方式是如何将该数组转换为移除所有不必要空间(即,第一个整数位于a[0],第二个整数位于a[0]+n位,以此类推)? 我希望它尽可能通用,因为n会随着时...

11得票2回答
使用反射确定 .Net 类型在内存中的布局

我在C#中尝试优化解析器组合器。当序列化格式与内存格式相符时,一种可能的优化是直接(不安全地)将要解析的数据复制到类型实例甚至多个实例上。 我想编写代码来确定内存格式是否与序列化格式匹配,以便动态确定是否可以应用优化。(显然,这是一种不安全的优化,可能由于许多微妙的原因而无法工作。我只是在进...

8得票3回答
找到一个包含所有可能的3x3位模式的NxM网格

更新:这被称为de Brujin环,但我仍然需要找出一个简单的C#算法。 http://en.wikipedia.org/wiki/De_Bruijn_torus http://datagenetics.com/blog/october22013/index.html 我需要尽可能密...

8得票5回答
当VC++打包位字段时,它在做什么?

为了澄清我的问题,让我们从一个示例程序开始: #include <stdio.h> #pragma pack(push,1) struct cc { unsigned int a : 3; unsigned int b : 16; unsi...

8得票1回答
将两个short打包成一个int,处理正负数问题

我正在创建一个名为PackedUnsigned1616的类,它可以将两个无符号短整数存储在一个整数中,还有一个名为PackedSigned1616的类,它可以将两个有符号短整数存储在一个整数中。我已经阅读了位运算的相关内容,但仍然不清楚如何处理有符号和无符号以及大于或小于short范围的值(它...