2

我正在研究一个需要跟踪长度为 96 的位图的功能。我使用此图在下面编程 asic。是否有一个标准的整数类型来保存 96 位。对于 64 位,我们有 unsigned long long。96位有什么类似的吗?也欢迎任何替代建议。

PS:这是基于 linux 的 Cisco OS。语言是C。

4

4 回答 4

3

GCC__int128在支持它的目标上具有 128 位整数,但没有专门针对 96 位的整数。

于 2012-07-13T17:30:14.047 回答
3

我可能会选择一组 3 个 uint 的数组。这应该足够快,而且不会更复杂。

EG,设置一点:

wordNo = i / 32
bitNo = i - (32*wordNo)
mask = 2 ** bitNo

array[wordNo] |= mask

……或者差不多。

于 2012-07-13T17:40:07.583 回答
3

有一种方法可以创建一个大小为 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_tsizeof应该得到 12 个字节(12 * 8 = 96)。

于 2012-07-15T10:10:10.483 回答
0

您应该使用 clang 的新功能_ExtInt。它在 clang 11 中,所以你可能没有它。在这里查看详细信息和用法。

于 2020-05-04T00:25:16.473 回答