我读到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
我在这里缺少什么?
答案 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.所有工作方式相同。