有人可以解释这些关于右移算术或左移逻辑的问题吗?

Can someone explain these questions on shifting right arithmetic or shifting left logical?

这是在考试中,我承认我不知道发生了什么,考试前没有讨论轮班。它们都以十六进制开始,然后指令将一个移到左逻辑值,另一个移到右算术值。出于某种原因,左边的逻辑一个有每个数字加 5,然后在开头有一个 8,使十六进制从 7 变为 B(12),而在第二个中,前面有一个 E,但数字保持不变?我的笔记上有教授说添加两个 0 或两个 1,但我仍然没有看到他从哪里得到答案。 $t1 和 $t0 值在顶部给出,然后每个问题的下面是不同的 MIPS32 语句; sll $t2, $t1, 3 和 sra $t2, $t0, 2。$t1 为十六进制 (0x7777 77777),$t0 为 (0x8888 88888)。

首先,B 是 11,所以不是 7+5。另外,你似乎在做加法,而不是移位。

首先将数字转换为二进制。左移从右边引入零,所以附加 3 个零并从前面切掉 3 个前导位。将数字转换回十六进制。你会看到除了最后一个数字之外的所有数字都变成了 B(因为它们拉入了以下 7 的位)。最后一位显然有您附加的 3 个零,因此最终成为 8.

算术右移复制最高有效位。在你的情况下,这是一个 1,所以在前面加上两个 1 位并从右边砍掉两位。虽然前面确实给出了 1110=E,但其余数字将是 0010=2 而不是 8。正确的结果是 E2222222.