能力值:
( LV3,RANK:20 )
|
-
-
2 楼
你自己都说了,64位除以1024,相当于除以2的10次方,所以就相当于把这64位的数整体右移10位就是结果;
先将低32位右移10位,然后将高32位右移10位,只是高32位右移10后,移出来的10位要放到低32位的高端呀,
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
shr eax, 10
mov ecx, edx
shl ecx, 22
or eax, ecx
楼上说得对,这些代码就是:把高32位的低10位放到低32位的高10位上面。左移右移好像在masm中都是补0的,所以or执行正好就是高32位的低10位与0或,低32位的低22位与0或,结果显然是高32位的低10位和低32位的低22位。
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
;SHL、SAL: 每位左移, 低位补 0, 高位进 CF
;SHR? : 每位右移, 低位进 CF, 高位补 0
;SAR? : 每位右移, 低位进 CF, 高位不变,(在每次右移时,保持最高位(符号位)不变,最低位右移至CF中)
一个大数24338148010
EDX 00000000000000000000000000000101
EAX 10101010101010101010101010101010
shr eax, 10
EAX 00000000001010101010101010101010
mov ecx, edx
ECX 00000000000000000000000000000101
shl ecx, 22
ECX 00000001010000000000000000000000
or eax, ecx
EAX 00000001011010101010101010101010 = 23767722
24338148010 /1024 = 23767722
shr edx, 10
EDX 0
把 edx加在eax 前面 组成新的数,自己不清楚的时候,画个图就行了。
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
>当于把这64位的数整体右移10位就是结果
看到这句才是关键啊。
再加上我之前把高低方向搞错了(错误的理解是从左到右当成低高了)
才搞糊涂了啊。
多谢!
|
|
|