为什么这个数学运算有效? (从32位寄存器获取8位寄存器)

时间:2013-07-17 00:03:00

标签: assembly

E?X % 256 = ?L

这似乎总是起作用,其中256是基数10,%是模数函数。

为什么?

3 个答案:

答案 0 :(得分:0)

“mod 256”是除以256后的余数。

在二进制中,结果是最低的8位(因为256是2到8)。

这就像“mod 2”给出最低有效位(0或1)。

开(十进制,基数为10),“mod 100”给出最后两位小数(2013 mod 100 => 13)。

答案 1 :(得分:0)

这就是数学运作的方式。如果您将 x 除以 m n ,则余数将是的最低 n 位数基数 m 中的> x

例如,在基数10中,如果将任何数字除以10 n ,则除法的其余部分将是最不重要的 n 原始数字的数字。例子:

     5 mod 10^1 =    5 mod 10  =  5
  1245 mod 10^2 = 1245 mod 100 = 45

二进制中完全相同的事情 - 256是2 8 (如果你愿意的话,或者二进制的100000000)。如果将任何数字除以100000000,则余数将是该数字的最低8位。

答案 2 :(得分:0)

简单: 当您按256进行修改时,您实际上正在按100000000

进行修改

例如:假设您有32位数字11110011111111001111011011110000并将其除以256(基数为10)/ 100000000,这样您基本上可以取出最后8位数字即11110000,你可以这样想。在十进制中假设你想要最后4位数,所以你必须采用10000(基数10)的mod。类似于二进制数

的情况