如何实现无符号33位整数类型

时间:2010-10-12 17:33:46

标签: c++ g++

有没有办法为gcc编译器实现33位无符号整数?截至目前,我使用无符号64位整数来存储33位值。但不幸的是,我希望在达到满33位后重置该值......

4 个答案:

答案 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)

我写了一些处理这个问题的代码:

http://bitbucket.org/pnathan/logic-vector

你可以自由地查看它。如果您修改/改进它,请修补。 :)