2

我读到 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

我在这里想念什么?

4

3 回答 3

3

我猜你是在 8 位类型上操作,所以你的左移值溢出了。

  • (167 * 2) = 334

  • 334 % 256 = 78

于 2012-06-26T17:11:19.867 回答
1

换档时你扔掉了一点。解决办法确实是101001110,但是只能存储01001110(根据例子)。

所以,通常是的,sll 乘以 n^2,如果它适合寄存器。

于 2012-06-26T22:42:10.810 回答
0

当然,根据定义,它确实如此。让我们看看以 10 为底。我取数字 12345。我将其左移一个位置,用零填充我得到 123450。再做一次 1234500 等等。对于每个位置,我乘以 10。如果我做三班,那么就是 10*10*10 或 10^3。以 b 为底的 n 次左移与乘以 b^n 相同。基数 2,基数 8,基数 10,基数 16。所有工作都相同。

于 2015-10-26T00:22:59.160 回答