#include<stdio.h>
int main()
{
unsigned int a = -10;
printf("%u", a);
}
这个程序的输出是什么?
我们定义了一个无符号整型变量a,并赋值-10,可是-10是有符号的,结果是怎样的的呢?
运行可得到这个数 :4294967286
好奇怪哦。
我们来看-10的原码,反码,补码
原10000000 00000000 00000000 00001010
反11111111 11111111 11111111 11110101
补11111111 11111111 11111111 11110110
由于是无符号数,第一位为有效数字,我们计算可得补码代表的十进制数值为
2的32次方-1-1-8,这个数字恰好为4294967286.
由此证明数据在计算机内存中以补码形式存储。