有没有办法为gcc编译器实现33位无符号整数?截至目前,我使用无符号64位整数来存储33位值。但不幸的是,我希望在达到满33位后重置该值......
答案 0 :(得分:13)
您可以使用位字段,例如(result)
#include <stdint.h>
#include <cstdio>
struct uint33_t {
uint64_t value : 33;
};
int main() {
uint33_t x = {0x1FFFFFFFFull};
printf("%llx\n", x.value);
x.value += 1;
printf("%llx\n", x.value);
return 0;
}
答案 1 :(得分:2)
struct int33
{
unsigned long long x:33;
};
答案 2 :(得分:2)
当超出33位边界时,该值将溢出;如果在获取值时使用33位掩码,则应该获得所需的行为。
答案 3 :(得分:0)