能力值:
( LV7,RANK:100 )
|
-
-
2 楼
这主要是考虑有符号数而做的处理。试想一下,如果原值是-1,不做那个修正的后果是什么?
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
嗯 对的 就是符号位清零处理 前提是只用低位进行有效计算
|
能力值:
( LV3,RANK:20 )
|
-
-
4 楼
一般在VC代码中看到cdq,上下文应该就是除法
|
能力值:
( LV3,RANK:20 )
|
-
-
5 楼
.text:00401015 mov eax, esi .text:00401017 cdq .text:00401018 sub eax, edx //自身减去扩展高位,什么意思?? .text:0040101A sar eax, 1
对esi的值进行带符号地除以2, 如果直接sar eax,1,结果-1/2仍是-1, 加上前面的逻辑,结果就是-1/2=0。
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
一个有符号数除以2的n次方,如果采用右移位操作完成,非负数结果自然正确,负数需要额为+1,结果才正确。
当被除数为非负数时,edx为0,减去0相当于什么都没做。当被除数为负数时,edx为-1,减去-1就意味着+1,正好修正了结果。
|
能力值:
( LV3,RANK:20 )
|
-
-
7 楼
先去了解下sar是什么操作吧。
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
这是c语言为了向零取整。不做这一步,在负数的时候是向负无穷取整
|
|
|