首页
社区
课程
招聘
[求助]除法的优化代码中为什么结果负数的情况结果要加个1
发表于: 2012-4-10 20:59 5534

[求助]除法的优化代码中为什么结果负数的情况结果要加个1

2012-4-10 20:59
5534
6:        a=a/11;
0040F990   mov         ecx,dword ptr [esp+8]
0040F994   mov         eax,2E8BA2E9h  
0040F999   imul        ecx      
0040F99B   sar         edx,1
0040F99D   mov         ecx,edx
0040F99F   shr         ecx,1Fh   
0040F9A2   add         edx,ecx


如图最后两行代码,在书上p96上说负数的情况时会对结果加1,但我很疑惑为什么要加1啊,感觉最后两行代码没有必要啊

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 83
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
额,没人回复,想了一夜,今早想到不知道是不是。

在低双字被截除后,最后一位那个补码中加1的位也被丢失了,所以负数结果(高双字)的最后要加个1重新补上,数学上的东西不知道是不是,额,后悔当初不好好学了。
2012-4-11 10:49
0
雪    币: 517
活跃值: (35)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
3
咋没看到加1呢?
2012-4-11 11:06
0
雪    币: 83
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
红色代码部分就是加1啊,那个1是当被除数a是负数的时候算出来的,a是正数时候就是加0了
2012-4-11 12:57
0
游客
登录 | 注册 方可回帖
返回