使用按位函数,然后尝试进行二进制补码但没有成功

问题描述

我目前正在处理一个项目,但我正处于一个停顿点,不知道我目前所看到的是否会扰乱我接下来的代码的其他部分。总之,我在 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 (将#修改为@)