如何返回某些位的有符号值

时间:2015-02-01 20:37:36

标签: 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;
}

0 个答案:

没有答案