如何解决使用按位函数,然后尝试进行二进制补码但没有成功
我目前正在处理一个项目,但我正处于一个停顿点,不知道我目前所看到的是否会扰乱我接下来的代码的其他部分。总之,我在 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 举报,一经查实,本站将立刻删除。