c语言unsigned取反的问题

unsigned int a=-3;
printf("%u\n",~a);

为什么打印出来的是2

因为-3在计算机中是以补码存在的,只要把3的二进制取反在加1就是-3 的补码:FF FF FF FD然后取反当然是2了!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-08-26
正数变负数的方法就是把正数按位取反再 +1
那么,你把负数变成正数,就是把负数按位取反再 +1 了
第2个回答  2021-03-31

C语言_084_取反运算

相似回答