我正在研究一个需要跟踪长度为96的位图的功能。我使用此地图编程asic如下。 是否有标准整数类型可容纳96位。对于64位,我们有无符号长long。有什么相似的96位? 任何其他建议也欢迎。
PS:这是基于Linux的思科操作系统。语言是C.答案 0 :(得分:3)
我可能会使用3个uint的数组。这应该足够快,而不是更复杂。
EG,设置一下:
wordNo = i / 32
bitNo = i - (32*wordNo)
mask = 2 ** bitNo
array[wordNo] |= mask
......或者在那附近。
答案 1 :(得分:2)
GCC在支持它的目标上有128位整数__int128
,但96位没有特别的。
答案 2 :(得分:2)
有一种方法可以创建一个变量,其大小精确为96位:联合或结构中的位域。
typedef union { // you can use union or struct here
__uint128_t i : 96;
} __attribute__((packed)) uint96_t;
uint96_t var; // new uint96_t variable
var.i = 123; // set the value to 123 (for example)
gcc
这对我有用。如果您使用uint96_t
测试sizeof
的大小,则应获得12个字节(12 * 8 = 96)。
答案 3 :(得分:0)
您应该使用clang的新功能_ExtInt
。它在clang 11中,因此您可能没有。在docs example中查找详细信息和用法。