我已经做好了
uint32_t bits= 0;
bits |= 1<< 31;
然后使用
void printbits(uint32_t n) {
if (n) {
printbits(n >> 1);
printf("%d", n & 1);
}
}
在位上我得到 10000000000000000000000000000000,这是我想要的,但是当我使用我的 getbit(bits, 0)
int get_bit(int n, int bitnr) {
int mask = 1 << bitnr;
int masked_n = n & mask;
int thebit = masked_n >> bitnr;
return thebit;
}
我得到一个 -1 而不是 1,知道为什么吗?
谢谢!