X 我知道了TIPS:左右滑动导航栏可以查看更多栏目
当一个int形数等于32767时,再加一输出就等于—32768,可是按补码32767取反加一才等于-32767吗?
是不是我理解错了,有会的朋友帮忙看一下。
>> 本文固定链接: http://www.vcgood.com/archives/2075
>> 转载请注明: 独孤傲天 2008年01月06日 于 C语言帝国 发表
我看过一本书,好像是《计算机xx概论》,是外国人编写的,汉化版,书中的第一章,详细的解答了你所问的问题,我说一下,看看你能不能明白。
对二进制进行操作的时候,因为考虑到负数,又不想真正做减法,于是引入了补码,最初的补码是:直接对原数取反,后来,在求数字0 的补码时,如果从正方向求解,得到它的补码是x,但是如果从负方向求解,得到它的补码是y。这样一来,0的补码,就有两个(就好像数学上,函数不连续时,在x0点的导数,有左导数,右导数一样),早期的计算机,主要用于科学上的计算,这样,如果出现0,就有问题了。
后来,计算机的设计者,为了使0的补码只有一个,就把补码定义为:原数取反,再加1.并且,书中还以8-b二进制为例,讲解了这个问题,unsigned 0—255有符号时:-128—127,书中还讲解了,为什么, 127+1=-128 我当时看懂了,现在不记得了。抱歉啊
谢谢了,我现在也明白了,谢谢。
你必须先 登录才能发表评论。
我看过一本书,好像是《计算机xx概论》,是外国人编写的,汉化版,书中的第一章,详细的解答了你所问的问题,我说一下,看看你能不能明白。
对二进制进行操作的时候,因为考虑到负数,又不想真正做减法,于是引入了补码,
最初的补码是:直接对原数取反,后来,在求数字0 的补码时,如果从正方向求解,得到它的补码是x,但是如果从负方向求解,得到它的补码是y。这样一来,0的补码,就有两个(就好像数学上,函数不连续时,在x0点的导数,有左导数,右导数一样),早期的计算机,主要用于科学上的计算,这样,如果出现0,就有问题了。
后来,计算机的设计者,为了使0的补码只有一个,就把补码定义为:原数取反,再加1.
并且,书中还以8-b二进制为例,讲解了这个问题,
unsigned 0—255
有符号时:-128—127,书中还讲解了,为什么, 127+1=-128
我当时看懂了,现在不记得了。抱歉啊
谢谢了,我现在也明白了,谢谢。