第1个回答 2008-07-09
首先:计算机中数值是用2进制表示的,也就是0 和1 计算机有16位和32位之分,但是现在普遍都是32位的了
其次:在计算机中数值都是用补码表示的,一个正数的补码是他本身,而负数的补码就是按位取反加1 例如-10在2进制中的表示方法为:先求10的原码1010 对1010取反为0000 0000 0000 0101(整数为2字节也就是16位)然后加1 即1111 1111 1111 0110 我们现在来10 和-10在计算机中表示的对比:
10补码/原码:0000 0000 0000 1010
-10的补码: 1111 1111 1111 0110
所以可以看出最左边的一位也就是最高位代表这个数是正还是负 0就是正1就是付
我刚才说在32位机中int型是两个字节也就是16位,那么最小的负数是几?是1000 0000 0000 0000 我说了最高位的代表正负 是不 所以这个数是-2^15 那么最大的正数怎么表示?0111 1111 1111 1111 这个数表示成2^15 ,可是这中间有一个0000 0000 0000 0000 得把他抠出去。也就是2^15 -1
第3个回答 2008-07-08
-2^15~(2^15-1)
计算机中数字是以补码存储的
主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补
码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。
在C中,用高位置1来表示负数,int型占两个字节共16位,32768的二进制是10000000,00000000,高位为1,系统会认为是负数,所以32768需要用长型表示,占四个字节。最高位就不是1了。(00000000,00000000,10000000,00000000)
-32768在内存中的表示是10000000,00000000。过程是:先读入正值32768(10000000,00000000),再取反(01111111,11111111),再加1(10000000,00000000)本回答被提问者采纳