短整型为什么最大值和最小值是那样的?

短整型二进制长是16位,最大值是2的15次方-1,最小值是负的2的15次方,我不懂的是10000000000000000(17位)减去1,然后是16个1,那么就是2的16次方减一啊,最小值是0111111111111111,是2的15次方减一,可是这显然与正确答案不同,请详细讲下错在哪儿,正码,反码,补码是什么,谢谢了二进制不是最高位0是负数(被4和或者8整除位数,不够的用0补充),1是整数,为什么说机器的原码(0为正,1为负》小弟刚学C语言,求指教~~

我给你说说:
短整型占两个字节,一个字节8位,也就是16位。0000 0000 0000 0000 最低位是0位,最高位是15位。0--15正好是16位,明白吗?
无符号数:这16位都表示数字,最大是:二进制:1111 1111 1111 1111 十六进制:FFFF
十进制是:65535;有许多人都糊涂,2的16是65536啊;不错,但不是这个意思,它是指2个字节共16位是指能表示65536个数,我们是说的是16位能表示的最大数是65535,从0到65535正好是65536个数,明白了吗?比如一个4位数:0000 是0,1111是15,也就是说4位表示的最大数是15,不是2的4次方16,
有符号数:最高位是符号位,只能有15位表示数值,能表示32768个数,正数是0至32767这32768个数,负数是-1到-32768这32768个数,二进最高位是0表示正数,是1表示负数。
一般在计算机中,数是用补码表示,无符号数的补码就是原码,比如:在计算机中存放的是1101 0010 1101 1000 的数值,直接用二进制转化成十进制的方法算 是:53976
有符号数的补码是原码的反码末位加1,就是对二进制数按位取反,末位再加1,就是有符号数的补码。(补码的补码就是原码,求这个补码的原码就是对补码再进行求补码)比如;还是上面二进制数1101 0010 1101 1000 ,但这是有符号数的补码,我们必须先求出它的原码 ,按位取反,符号位不变,也不参与二进制转换十进制的计算:1010 1101 0010 0111 ,末位加1是:
1010 1101 0010 1000,十进制是:-11560;
再比如有符号数:1111 1111 1111 1111 先求原码,符号位不变,是:1000 0000 0000 0000
末位加1,原码是:1000 0000 0000 0001 所以十进制是-1;
至于机器的原码(0为正,1为负)呵呵,就是这样规定的啦。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-12-01
整型二进制长是16位, 最高位用作符号位,所以表示数值的只有15位。
最大值是正值,符号位是0,最大数值是2的15次方-1。
负数,符号位是1。剩下15位表示数值。
最小值,原码 是 全1。 即 1111 1111 1111 1111
负数用补码表示,补码等于(不计符号位)反码加1。
原码 1111 1111 1111 1111
反码 x 000 0000 0000 0000, 反码加1 = x 000 0000 0000 0001
补码 1000 0000 0000 0001.
这个 补码 的16进制是 0x8001
用c程序你可以输出看数值:
short x= 0x8001;
printf("%d",x); // -32767
计算机负数用补码的目的是,减法可以用加法器(硬件)来做,(减一个数,等于加一个负数),速度快。追问

最小值不是负的2的15次方吗,结果不应该是-32767,还有-7的二进制应该是1111,反码1000,补码是1001?然后又该怎么办,使减一个数,等于加一个负数,减去-7该怎么变

追答

是的,最大负数 用 补码 写出 是 short x= 0x8000; 得 -32768
用原码写不出来,按原码能写的(全1),转换后 只能 得-32767。

-7的二进制,用 short int 原码是 1000 0000 0000 0111,不是 1111
反码 x111 1111 1111 1000.
补码是 1111 1111 1111 1001.

追问

原码,补码把我弄糊涂了,原码,补码他们之间是什么关系,是两种方法还是如果运算里有负数然后把负数用补码表示,继续进行?(感觉我问的已经偏离主题了)
1000 0000 0000 0000为什么补码变成了0000 0000 0000 0000

追答

原码, 数学概念,就是原来码的表示方法,2进制,符号位正数0,符号位负数1,其它位0和1,负得越厉害,数“越小”,所以 符号位1,其它位全1,是最小。
补码,计算机机器内部对负数的特别表示法。(正数的原码,补码是一样的,不套用负数的规律。)。这是计算机内部的技巧,一般程序员不必深究。

本回答被提问者采纳
相似回答