负数在内存中是以补码的形式存储的,
即 -666
原码:1000 0010 1001 1010
反码:1111 1101 0110 0101 (符号位不变,其它位取反)
补码:1111 1101 0110 0110 (反码+1)
即,实际内存中的数据为0b1111 1101 0110 0110=64870
而a为unsigned short int,所以反馈的应该就是64870正数。
-666 在内存中的是以补码的形式存在的
-666的原码是
1000 0010 1001 1010
补码是 原码除符号位(第1位)外各位取反+1,所以是
1111 1101 0110 0110
由于a是无符号数,所以第一位的1不在表示负数,1111 1101 0110 0110 的十进制数就是64870