如何显示Shift Left Logical乘以2 ^ n?

时间:2012-06-26 17:10:00

标签: assembly mips

我读到Shift Right Logical将数字除以2 ^ n然后我做了以下来证明它。

srl $t2,$t1,1

  $t1:  10100111  :  167
  $t2:  01010011  :  83

另外,我读到Shift Left Logical乘以2 ^ n。但是我无法证明这一点。

sll $t2,$t1,1

  $t1:  10100111  :  167
  $t2:  01001110  :  78

我在这里缺少什么?

3 个答案:

答案 0 :(得分:3)

我猜你正在使用8位类型,因此你的左移值会溢出。

  • (167 * 2)= 334

  • 334%256 = 78

答案 1 :(得分:1)

当你换班时,你会甩掉一点。解决方案实际上是101001110,但只能存储01001110(根据示例)。

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

答案 2 :(得分:0)

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