how to implement unsigned 33 bit integer type
Is there any way to implement 33 bit unsigned integer for gcc compiler? As of now I am using unsigned 64 bit integer to store 33 bit value. But unfortunately i want the value to be reset开发者_如何学Python after it reaches full 33 bits...
You could use a bit field, e.g. (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;
}
struct int33
{
   unsigned long long x:33;
};
?
The value will overflow when it is pushed beyond the 33-bit boundary; if you use a 33-bit mask when fetching the value you should get the behavior you want.
I wrote some code dealing with this:
http://bitbucket.org/pnathan/logic-vector
You are free to look it over. If you modify/improve it please patch back. :)
 
         加载中,请稍侯......
 加载中,请稍侯......
      
精彩评论