短整型二进制长是16位,最大值是2的15次方-1,最小值是负的2的15次方,我不懂的是10000000000000000(17位)减去1,然后是16个1,那么就是2的16次方减一啊,最小值是0111111111111111,是2的15次方减一,可是这显然与正确答案不同,请详细讲下错在哪儿,正码,反码,补码是什么,谢谢了二进制不是最高位0是负数(被4和或者8整除位数,不够的用0补充),1是整数,为什么说机器的原码(0为正,1为负》小弟刚学C语言,求指教~~
最小值不是负的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,是最小。
补码,计算机机器内部对负数的特别表示法。(正数的原码,补码是一样的,不套用负数的规律。)。这是计算机内部的技巧,一般程序员不必深究。