家庭作业的C输出

Alg*_*ist -1 c

int main()
{
    signed int bit=512, mBit;
    {
        mBit = ~bit;
        bit = bit & ~bit ;
        printf("%d %d", bit, mBit);
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

一个.0,0
b.0,513
c.512,0
d.0,-513

伙计们,我没有这个问题的答案,也无法解释question.so你可以请提供你的答案跟正确的解释.

eck*_*kes 5

正确的答案是:http://ideone.com/frKOz

  • bit为0因为bit & ~bit总是导致零(1000000000 & 0111111111).
  • mbit是-513,因为反相512是-513.

编辑:为什么是mbit-513?

请参阅有符号整数处理的说明:http://www.rwc.uc.edu/koehler/comath/13.html