MIPS指令模

MIPS instruction modulo

b = a % 16

a --> $s0
b --> $s1

答案:$s1, $s0, 0xF

#0xF= 0000 0000 0000 0000 0000 0000 0000 1111

当我将它转换为十进制时,它是 15。

我不太清楚为什么是 15?

任意数除以b的余数在[0, b-1]范围内。所以模 16 returns 最大值为 15

为了得到任何数字的模 2N,我们取它的最后 N 位,因为位置 M 的任何更高位且 M > N 表示值 2M 可被 2N 整除。得到N位的掩码是2N - 1。这意味着 % 16 = a & 0xF = a & 15