所以我有一个txt文件,我正在使用02324020中的数字,这是MIPS指令中的机器代码:add $t0, $s1, $s2
如果它是二进制并切成6,5,5,5,5,6的部分,则所采用的数字为:0,17,18,8,0,20
这使得指令的概念为R [rd] = R [rs] + R [rt],26-31的数字为操作码0,表示R格式,rd = 8,rs = 17,rt = 18
我试图屏蔽这些位,所以我只看到21-25之间的位然后接收它们的数字:0,17,18,8,0,20因为向右移动:{ {1}}给我操作码0并告诉我它的R格式。
所以现在我试图找到17,但我不知道printf("\n%x\n", code >>26);
之后要放置什么:
& 0b
我真的可以用一个例子来查找我的号码02324020
中的剩余号码到目前为止,这是我的代码:
printf("\n%x\n", code >>21 & 0b____);
答案 0 :(得分:1)
要定义二进制数字,您可以使用0b___
(正如您在答案中提到的那样),而不是0x0b0___
。
要提取您需要的数字,您必须按位移code
,以便您感兴趣的位位于最右端。然后OR
只有你感兴趣的那些。把这些放在一起,你有:
printf("\n%x\n", code >> 26);
printf("\n%x\n", code >> 21 & 0b11111);
printf("\n%x\n", code >> 16 & 0b11111);
printf("\n%x\n", code >> 11 & 0b11111);
printf("\n%x\n", code >> 6 & 0b11111);
printf("\n%x\n", code & 0b111111);