鱼C论坛

 找回密码
 立即注册
查看: 2665|回复: 5

检测点11.2不懂啊。。谁教下

[复制链接]
发表于 2012-1-19 15:35:20 | 显示全部楼层 |阅读模式

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

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

x
fishc里课后习题:
mov al,80h   
add al,80h以后
怎么会:CF       OF       SF       ZF       PF
             1         1          0         1         1
CF进位我知道。但是1000 0000+1000 0000为什么会有溢出呢?倒数第二位不是都是0吗0000000+0000000这样算错吗?不懂

再是mov al,0fch
add al,5h
也就是
11111100+101
CF       OF       SF       ZF       PF
1         0          0         0         0
又怎么会没有溢出呢?我感觉有额


谁教教啊~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-1-20 11:25:50 | 显示全部楼层
二进制   1000 0000b  等于 16进制   80H   因为最高位(第七位)为1    为有符号数        所以就等于  -128        -128 + -128 = -256    已超出字节存储有符号数的范围(   -128   ~   +127   ) 所以溢出0f=1

第二个 al = 0fch =  --4D         5h =+ 5d   所以  -4 + 5= 1   1没有超出字节有符号数的存储范围,所以of=0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2012-1-20 11:36:53 | 显示全部楼层

为什么最高为为1就是有符号数呢?有无符号不是说看SF的值吗?
那凡是最高位为1就是有符号数又是负数。
最高位为0是无符号数为正数,这压根好像不对额。。
能将清楚点吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-1-20 12:12:43 | 显示全部楼层
本帖最后由 ever.g 于 2012-1-20 12:52 编辑

当你关心运算结果有无符号时,去看符号位,和有无溢出。。
不关心可以无视,内存中的数据存储方式是不会变的
关于溢出  80h 换成10进制是-128?  -128+-128   有进位 但是结果al中变成了0  很明显当作有符号运算结果不对所以产生溢出

同理0100 0000+0100 0000 = 1000 0000 即64+64 = 128  没有进位,但是结果当作有符号数就为-128了,结果明显是不对的
产生溢出! 所以异号相加 不会溢出,同号相加就要考虑溢出问题了,当然这是针对有符号运算的,你当作无符号就可以不考虑
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-1-20 12:36:13 | 显示全部楼层
415968430 发表于 2012-1-20 11:36
为什么最高为为1就是有符号数呢?有无符号不是说看SF的值吗?
那凡是最高位为1就是有符号数又是 ...

你看 OF 时 所有数据都是有符号数  你不看OF时 所有数据都为无符号数     
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-1-20 13:38:02 | 显示全部楼层
小马过河 发表于 2012-1-20 12:36
你看 OF 时 所有数据都是有符号数  你不看OF时 所有数据都为无符号数

哦哦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-10-8 18:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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