鱼C论坛

 找回密码
 立即注册
查看: 5194|回复: 7

对于补码的理解有疑惑,求指点

[复制链接]
发表于 2011-9-25 13:44:49 | 显示全部楼层 |阅读模式
1鱼币
一个数负数,--->取反 加一   这个可以理解

不过给定的一个数,你怎么知道它是表示正还是表示负

对于F6我第一感觉它是表示246

但它也可以是10通过取反加一 得出的, 就是说,它可以表示 -10

虽然说,它是正是负,是由程序员自己认为的。

那CPU是认为它 -10  还是 246

举个例子,在某章节中,call  CS:[F6]  

事实上,CPU认为它是 -10   调试程序,它是往 -10的方向跳转

请帮我理一理这个概念


最佳答案

查看完整内容

楼主有点本末倒置了,首先CPU并不关心他是正还是负,计算的结果是唯一的,最后的结果是正还是负要看程序员怎么处理,比如al,bl两数相加,如果你把他看成无符号数也就是正数相加,那最后的结果你就要考虑CF位,如果CF位为1,也就是有进位,那最后的结果就应该加上2的8次方256,如果看成负数相加就应该考虑OF位,如果OF位为1则最后的结果应该再减去128或者说加上负的128,CPU的计算结果是一样的,只是看程序员
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-9-25 13:44:50 | 显示全部楼层
楼主有点本末倒置了,首先CPU并不关心他是正还是负,计算的结果是唯一的,最后的结果是正还是负要看程序员怎么处理,比如al,bl两数相加,如果你把他看成无符号数也就是正数相加,那最后的结果你就要考虑CF位,如果CF位为1,也就是有进位,那最后的结果就应该加上2的8次方256,如果看成负数相加就应该考虑OF位,如果OF位为1则最后的结果应该再减去128或者说加上负的128,CPU的计算结果是一样的,只是看程序员
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2011-9-25 15:35:00 | 显示全部楼层
你那个call  CS:[F6] 只是相对代码段的偏移,又不是计算哪来的正负
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2011-9-25 19:09:52 | 显示全部楼层

我知道是偏移,但,为什么CPU会认为它向上偏移十个单位,而不是向下偏移246个单位呢?
如果我的本意,就是要向下跳转246个偏移,那要CALL多少
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2011-9-26 01:29:21 | 显示全部楼层
F6相对于FF当然是向上偏移了,往下偏移就得FF+0A,地址由低到高,没有负数的地址,你把概念弄乱了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2011-9-26 07:53:05 | 显示全部楼层
这要看它的最高有效位 最高有效位是用来表示符号的 如果是0表示正数  1 表示负数
举个例子 假设机器机长为8位 [+127]补=01111111   [-127]补=10000001  
你可以拿个负数到计算器转换下就知道了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2011-9-26 09:41:29 | 显示全部楼层
其实2楼说的已经很清楚了。。
1、为什么要选用补码这一方式,因为无论你需要的是有符号还是无符号的运算,用补码形式的运算的结果都是一致统一的。
比如:01H+91H=92H
如果是有符号数运算,则01H=1;91H=-109;则01H+91H=-108;而92H看作有符号数时也为-108.
如果是无符号数运算,92H=146结果也准确。
当然,如果运算使得相关标志位有变化,还得继续看相应标志位的情况(无符号数看进位标志位;有符号数看溢出标志位)。
2、call cs:[F6]
这个应该是跳转目的地址直接在操作指令中的,你不管他是正的F6还是负数-10,他在计算机内总有明确唯一的表示11110110,即执行完后ip=11110110,不需要管他是正还是负。


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-2-16 13:14:01 | 显示全部楼层
这要看它的最高有效位 最高有效位是用来表示符号的 如果是0表示正数  1 表示负数
举个例子 假设机器机长为8位 [+127]补=01111111   [-127]补=10000001  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-6 12:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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