微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

我目前正在处理一个项目,但我正处于一个停顿点,不知道我目前所看到的是否会扰乱我接下来的代码的其他部分。总之,我在 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 举报,一经查实,本站将立刻删除。