1.
unsigned int a=-3;
printf("%u\n",~a);为什么打印出来的是2
因为-3在计算机中是以补码存在的,只要把3的二进制取反在加1就是-3 的补码:FF FF FF FD然后取反当然是2了!2.
#include <stdio.h>
int main()
{
unsigned int k=-5;
printf("%u", k);
getchar();
return 0;
}
运行以后,为什么得出的结果不是5,而是4294967291,很是不解,求教!
因为-5的二进制(32位)是 11111111111111111111111111111011 如果使用无符号十进制(最高位不作符号位,也作有效数位)的话 11111111111111111111111111111011 转为十进制就是 429496729