9得票1回答
是否应该对小于int大小的位域进行整数提升?

假设我有以下的struct结构体: struct A { unsigned int a : 1; unsigned int b : 1; }; 我感兴趣的是表达式的类型。尽管技术上来说,位域具有比int更小的“类型”和大小,因此可能应该进行整数提升,然后结果像在gcc和c...

16得票4回答
将位字段转换为整型

我已经按照这种方式声明了一个位域:typedef struct morder { unsigned int targetRegister : 3; unsigned int targetMethodOfAddressing : 3; unsigned int origi...

38得票15回答
在结构体中表示小值的最有效方法是什么?

通常我发现自己需要表示一个由非常小的值组成的结构。例如,Foo 有4个值,a、b、c、d,它们的范围从 0 到 3。通常我不在意,但有时候,这些结构会: 在紧密循环中使用; 它们的值会被读取数十亿次/秒,这是程序的瓶颈; 整个程序由数十亿个 Foo 组成的大数组构成; 在这种情况下,我...

16得票2回答
为什么不允许对位域进行非const引用?

C++11中的9.6/3节规定非const引用不得绑定到位域。这个禁止背后的动机是什么? 我理解不能直接将引用绑定到位域。但是如果我声明像这样的内容:struct IPv4Header { std::uint32_t version:4, // assumes the I...

26得票2回答
在Python中进行位域操作的最佳方法是什么?

我正在阅读一些通过UDP传输的MPEG传送流协议,并且它包含了一些奇怪的位字段(例如长度为13)。我正在使用“struct”库进行广义解包,但是否有一种简单的方法来说“获取接下来的13个位”,而不必手动调整位操作?我想要像C语言处理位字段的方式那样做(而不必退回到C语言)。 有什么建议吗?

57得票12回答
Python 是否有位字段类型?

我需要一个布尔数组的紧凑表示方式,Python中是否有内置的位域类型或者我需要寻找一种替代方案?

10得票4回答
在Java中实现C语言风格的位域

我遇到了一个问题,有些困难,我的同事告诉我这里是寻求帮助的好地方。 我正在尝试在Java中实现C语言风格的位域(bitfield)。以下是一个简单的示例(此刻我没有实际代码)。 typedef union { typedef struct { unsigned short...

11得票2回答
如果将无符号整数左移超过其位域宽度,但小于其类型大小,这是否未定义?

struct Type { uint8_t var : 3; }; int main() { struct Type bar; bar.var = 1; uint8_t baz = bar.var << 5; } 根据标准,左移操作数位数超过左操作...

65得票4回答
在一个字节内存中存储8个逻辑真/假值?

我正在使用一种只有2KB的SRAM的微控制器,因此需要尽量节约内存。我试图通过位域(bitfield)将8个0/1值放入一个字节中,但是却不太能理解如何实现。struct Bits { int8_t b0:1, b1:1, b2:1, b3:1, b4:1, b5:1, b6:1, b...

12得票2回答
初始化位域。

当你写代码时 struct { unsigned a:3, b:2; } x = {10, 11}; 在 ANSI C(C89)中,x.b 是否保证为 3?我已经阅读了标准多次,但似乎没有找到确切的情况。 例如,“无法由结果无符号整数类型表示的结果会对大于结果无符号整数类型所能...