关于求余的符号位

      整数才可以求余,求余后的符号位与左边数相同。

例:

5%2=1       5%-2=1       -5%2=-1       -5%-2=-1


#include<iostream>

using namespace std;




int main()
{
   cout<<5%2<<endl;
   cout<<5%-2<<endl;
   cout<<-5%2<<endl;
   cout<<-5%-2<<endl;


return 0;

}


运行结果:

1
1
-1
-1
Press any key to continue



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,首先我们需要了解一下i型指令的格式。i型指令的格式通常为: ``` opcode rs rt immediate ``` 其中 opcode 为操作码,rs 和 rt 分别为源寄存器,immediate 为立即数。在本题中,我们需要使用一个操作码、两个寄存器和一个立即数来完成对学号后两位余的操作。为了简化问题,我们假设操作码为 0000,寄存器 rs 存放学号,寄存器 rt 存放余数,立即数为 100。 接下来我们可以使用 Logisim 来实现这个 i 型指令。具体步骤如下: 1. 打开 Logisim 并创建一个新电路。 2. 在电路中添加一个 32 位寄存器,用于存放学号。将其命名为 RegA。 3. 再添加一个 32 位寄存器,用于存放余数。将其命名为 RegB。 4. 添加一个 4 位选择器,用于选择操作码。将其命名为 Opcode。 5. 添加两个 5 位选择器,用于选择寄存器 rs 和 rt。将它们命名为 RegRs 和 RegRt。 6. 添加一个 16 位选择器,用于选择立即数。将其命名为 Imm。 7. 添加一个 32 位符号扩展器,用于将立即数符号位拓展到 32 位。将其命名为 SignExt。 8. 添加一个 32 位加法器,用于计算余数。将其命名为 Adder。 9. 将 RegA 的输出连接到 RegRs 的输入,将 RegB 的输入连接到 RegRt 的输出。 10. 将 Opcode 的输出连接到四个逻辑门的输入端,构成一个 4:16 译码器。将译码器的输出分别连接到各个指令的输入端。 11. 将 Imm 的输出连接到 SignExt 的输入,将 SignExt 的输出连接到 Adder 的输入之一。 12. 将 RegRs 的输出连接到 Adder 的输入之二。 13. 将 Adder 的输出连接到 RegB 的输入。 14. 完成电路后,我们需要对电路进行仿真测试。我们可以将学号设置为一个随机数,并将立即数设置为 100,然后运行电路,检查 RegB 的输出是否等于学号后两位的余数。 这样,我们就完成了一个简单的 i 型指令,用于学号后两位的余数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值