You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MIPS中用NOR实现逻辑非时,1 NOR 1得到-2是否正常?

在MIPS中用NOR实现逻辑非得到负数结果是否正常?

是的,这个结果完全正常,核心原因是MIPS的nor指令是按位操作,而非你可能预期的布尔型逻辑非。

具体拆解:

MIPS是32位架构,所有寄存器默认存储32位数据:

  • 当你执行nor $t1, $t1, $t1时,是对寄存器的每一位单独进行NOR运算:
    • 若原寄存器值为1,二进制是00000000 00000000 00000000 00000001,每一位和自身NOR后得到11111111 11111111 11111111 11111110,这在二进制补码规则下就是-2。
    • 若原寄存器值为0,按位NOR后得到全1的32位数据,对应补码的-1。

关于两种“非”的差异:

如果你的需求是布尔逻辑非(把任意非0值转为0,0转为1),按位NOR的方案确实不适用。这种场景可以用分支指令实现:

beq $t1, $zero, set_non_zero  # 若$t1为0,跳转到赋值1的分支
move $t1, $zero               # 否则将$t1设为0
j end
set_non_zero:
li $t1, 1                     # 将$t1设为1
end:

但多数开发者使用nor指令的场景是需要按位取反,而按位取反恰好等价于“自身NOR自身”,所以这类方案才会被广泛推荐。


内容的提问来源于stack exchange,提问作者tarski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 01:35:55