cenjie88 发表于 2011-10-3 22:37:50

关于补码

如何确定它(F0)是负数 的补码。

全澜达摩 发表于 2011-10-4 01:44:28

topcookie 发表于 2011-10-4 20:08:29

如果看成带符号数,最高位是符号位,不参与数值计算,如果为1就是负,正的为0

R0sЁ 发表于 2011-10-4 22:15:08

对于补码的理解有疑惑,求指点
http://bbs.fishc.com/forum.php?mod=viewthread&tid=4675&fromuid=107918

cenjie88 发表于 2011-10-4 23:09:28

嗯,鱼老师也是这么说过的,你看他是有符号数那么他就是有符号数,则反之。再次理解应该对了吧

yk94215 发表于 2011-10-8 23:19:30

本帖最后由 yk94215 于 2011-10-8 23:21 编辑

正数补码就是他本身,负数的补码是他的绝对值取反+1 。补码表示数字的时候只要是负数,他的最高位都是1.最高位为0都是表示正数。。
如果觉得实在搞不明白你就死记吧。比如一个8位的二进制数,用补码表示的数的范围就是
1000_0000~0111_1111换成10进制就是-128~127 那么 -127是多少呢,其实就是在最小的这个数上面+1.
也就是1000_0001 以此类推。如果换成16位的,那补码可以表示数的范围是多少呢,同理可得是1000_0000_0000_0000~0111_1111_1111_1111 换成10进制数是多少呢,就是-32768~32767

用这个表示方法就好的好处在于,0的补码就是0.也就是不会出现两个表示0的情况。同理如果是32位的数,那么表示的范围就是8000_0000~7FFF_FFFF(16进制表示,因为2进制实在太长了)。

记住一点就行了,补码表示的最高位为1的肯定是表示负数。。

asmfans 发表于 2011-10-8 23:52:34

yk94215 发表于 2011-10-8 23:19 static/image/common/back.gif
正数补码就是他本身,负数的补码是他的绝对值取反+1 。补码表示数字的时候只要是负数,他的最高位都是1.最高 ...

负数的补码表示为什么要各位取反之后还要加一?求解

yk94215 发表于 2011-10-9 00:19:16

本帖最后由 yk94215 于 2011-10-9 00:23 编辑

asmfans 发表于 2011-10-8 23:52 http://bbs.fishc.com/static/image/common/back.gif
负数的补码表示为什么要各位取反之后还要加一?求解

这个是因为补码设计的时候考虑的。补码设计的时候要求两个绝对值相同的时候,一正一负相加应该是=0的。比如20和-20相加应该是=0.
换成2进制数,那么20=0001_0100 (姑且用8位来表示)
按位取反后得的值是多少1110_1011这个数与前一个数接位相加的值是多少?值是1111_1111 这个数肯定不是0了。要使用他等于0当然再加1就得了1_0000_0000高位自然就溢出了,但是8位的数所以其值就为0了,所以负数的补码应该取反+1这样正负相加才会=0. 所以-20的补码是1110_1011+1=1110_1100;
可能你会问那如果是16位,32位,64位表示这个数字的话怎么办呢,其实只要在正数前面补0,负数前面补1就行了。

比如以上如果用16位表示20就是 0000_0000_1110_1011   -20就是1111_1111_1110_1100;
32位类推就可以得到。


tsembrace 发表于 2011-10-9 10:09:25

yk94215 发表于 2011-10-9 00:19 static/image/common/back.gif
这个是因为补码设计的时候考虑的。补码设计的时候要求两个绝对值相同的时候,一正一负相加应该是=0的。 ...

好详细,谢谢,学习了!

seuer126 发表于 2011-10-9 10:55:19

asmfans 发表于 2011-10-8 23:52 static/image/common/back.gif
负数的补码表示为什么要各位取反之后还要加一?求解

这是规定的,没有什么原因啊

tsembrace 发表于 2011-10-9 21:35:09

seuer126 发表于 2011-10-9 10:55 static/image/common/back.gif
这是规定的,没有什么原因啊

没错,确实是规定的;但这种规定确实是有原因的,具体看8楼~

gongheng 发表于 2011-10-11 10:22:38

8楼真详细!!!!!

朕要破外挂 发表于 2013-7-29 00:06:02

yk94215 发表于 2011-10-8 23:19 static/image/common/back.gif
正数补码就是他本身,负数的补码是他的绝对值取反+1 。补码表示数字的时候只要是负数,他的最高位都是1.最高 ...

我也是这么想的,哈哈

低手莫怪 发表于 2017-2-11 21:30:43

小甲鱼又说出关于补码的视频,虽然不是完全明白,不过还好有了概念
页: [1]
查看完整版本: 关于补码