标签: return bit-shift unsigned signed
我试图让这个函数通过使用2的补码返回第6-9位的有符号值,但我一直得到-15的返回值。知道我做错了吗?
代码:
int signedBits6through9(int v) { v = (v & 0b1111000000)>>6; // return the signed value in bits 6 through 9 if (v & 0b1000) v = ~v + 1; return v; }