我读到 Shift Right Logical 将数字除以 2^n,我做了以下证明。
srl $t2,$t1,1
$t1: 10100111 : 167
$t2: 01010011 : 83
另外,我读到左移逻辑乘以 2^n。但是我不能显示这个。
sll $t2,$t1,1
$t1: 10100111 : 167
$t2: 01001110 : 78
我在这里想念什么?
我猜你是在 8 位类型上操作,所以你的左移值溢出了。
(167 * 2) = 334
334 % 256 = 78
换档时你扔掉了一点。解决办法确实是101001110,但是只能存储01001110(根据例子)。
所以,通常是的,sll 乘以 n^2,如果它适合寄存器。
当然,根据定义,它确实如此。让我们看看以 10 为底。我取数字 12345。我将其左移一个位置,用零填充我得到 123450。再做一次 1234500 等等。对于每个位置,我乘以 10。如果我做三班,那么就是 10*10*10 或 10^3。以 b 为底的 n 次左移与乘以 b^n 相同。基数 2,基数 8,基数 10,基数 16。所有工作都相同。