鱼C论坛

 找回密码
 立即注册
查看: 4109|回复: 13

关于补码

[复制链接]
发表于 2011-10-3 22:37:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
如何确定它(F0)是负数 的补码。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
头像被屏蔽
发表于 2011-10-4 01:44:28 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-10-4 20:08:29 | 显示全部楼层
如果看成带符号数,最高位是符号位,不参与数值计算,如果为1就是负,正的为0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-10-4 22:15:08 | 显示全部楼层
对于补码的理解有疑惑,求指点
http://bbs.fishc.com/forum.php?m ... &fromuid=107918
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-10-4 23:09:28 | 显示全部楼层
嗯,鱼老师也是这么说过的,你看他是有符号数那么他就是有符号数,则反之。再次理解应该对了吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 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的肯定是表示负数。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-10-8 23:52:34 | 显示全部楼层

负数的补码表示为什么要各位取反之后还要加一?求解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-10-9 00:19:16 | 显示全部楼层
本帖最后由 yk94215 于 2011-10-9 00:23 编辑
asmfans 发表于 2011-10-8 23:52
负数的补码表示为什么要各位取反之后还要加一?求解


这个是因为补码设计的时候考虑的。补码设计的时候要求两个绝对值相同的时候,一正一负相加应该是=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位类推就可以得到。


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-10-9 10:09:25 | 显示全部楼层
yk94215 发表于 2011-10-9 00:19
这个是因为补码设计的时候考虑的。补码设计的时候要求两个绝对值相同的时候,一正一负相加应该是=0的。 ...

好详细,谢谢,学习了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-10-9 10:55:19 | 显示全部楼层
asmfans 发表于 2011-10-8 23:52
负数的补码表示为什么要各位取反之后还要加一?求解

这是规定的,没有什么原因啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-10-9 21:35:09 | 显示全部楼层
seuer126 发表于 2011-10-9 10:55
这是规定的,没有什么原因啊

没错,确实是规定的;但这种规定确实是有原因的,具体看8楼~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-10-11 10:22:38 | 显示全部楼层
8楼真详细!!!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-7-29 00:06:02 | 显示全部楼层
yk94215 发表于 2011-10-8 23:19
正数补码就是他本身,负数的补码是他的绝对值取反+1 。补码表示数字的时候只要是负数,他的最高位都是1.最高 ...

我也是这么想的,哈哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-2-11 21:30:43 | 显示全部楼层
小甲鱼又说出关于补码的视频,虽然不是完全明白,不过还好有了概念
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-25 13:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表