用2进制表示负数的疑问
znevq 2012-03-29 11:36:24 这个问题就结了许久呀,还是不能想明白,不知道是不时我钻牛角尖了
先说明以下都是在int占2字节的情况下的
比如-10用2进制表示的话,过程如下:
10的原码 0000 0000 0000 1010
取反 1111 1111 1111 0101
加1 1111 1111 1111 0110
这个也就是10的补码,也就是说在计算机中-10是以这个1111 1111 1111 0110存储-10的
然后可以知道这个1111 1111 1111 0110的最高位是符号位 表示该数为负数
然后我就不太明白了:
如果这个数是有符号型,那么由2进制表示法求得它等于-32758
如果这个数是无符号型,那么由2进制表示法求得它等于 65526
但是-32758在计算机中是以1000 0000 0000 1010这个补码存储的
而65526我用计算器 在int=2字节的模式下 却无法表示 貌似是默认成无符号型的了
现在我的理解是:
这个1111 1111 1111 0110只是代替-10存储进计算机的数,并没有实际意义。
这个疑惑求高手帮忙解答一下!!!