问题描述
我目前正在处理一个项目,但我正处于一个停顿点,不知道我目前所看到的是否会扰乱我接下来的代码的其他部分。总之,我在 python 3.x 中使用 XOR 按位函数(无论最新的是什么),我得到的结果是 -523003604。当转换为十六进制时,这个十进制是 -1F2C66D4。我所追求的是 -523003604 的有符号二进制补码,即十六进制的 E0D3992C。我不确定这是否会影响我在所有这些之后的代码。 我正在做的所有事情都是接收一个包含 8 位十六进制代码指令的文本文件,我将它们转换为 32 位二进制文件,然后在其中处理给定的信息。
我的二进制补码功能
def twosComp(d,bits): # decimal to twos complement
if (d & (1 << (bits - 1))) != 0:
d = d - (1 << bits)
return (d)
我使用按位进行异或的部分
elif (tempBin[26:] == '100110'): # XOR
count_total += 1
count_alu += 1
arrayPc += 4
array32[rd] = array32[rs] ^ array32[rt])
# array32[rd] = twosComp(array32[rd],16) #doesn't do anything
print(f'{array32[rd]},{array32[rs]},{array32[rt]}')
ins = f'xor ${rd},${rs},${rt}'
print(f'In MIPS: {ins}')
print(f'Updated Register: ${rd} = {array32[rd]}')
print(f'Updated pc = {arrayPc} \n')
#time.sleep(10)
我得到了什么
-523003604,-23456,523058508
In MIPS: xor $14,$8,$9
Updated Register: $14 = -523003604
Updated pc = 24
如果您需要查看事物并了解其运行方式,我非常愿意提供更多代码/整个代码。我目前也有其他问题,但我正在尝试一步一步地解决问题,我从我看到的第一件不正确的事情开始,然后从那里开始。
谢谢
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)