【发布时间】:2017-07-13 12:41:41
【问题描述】:
我正在研究这个将整数转换为 32 位二进制的函数。它适用于正整数,但我无法弄清楚如何在负整数到二进制转换的函数中实现二进制补码。我目前正在取负整数的绝对值,将该值转换为二进制,然后翻转字符串中的二进制值。我只是不知道如何在我的代码中实现二进制补码。
这是我所拥有的:
def intToHexaBin(num):
binnum=abs(num)
symdict={10:"A",11:"B",12:"C",13:"D",14:"E",15:"F"}
rlist=[]
blist=[]
while(binnum!=0):
if (binnum%2==0):
blist.append(str(0))
else:
blist.append(str(1))
binnum//=2
x = (''.join(blist[::-1]).zfill(32))
if (num<0):
'''
I got as far as reversing the binary values for
converting a negative number to binary
'''
for index, value in enumerate(blist):
blist[index] = '0'
if value == '0':
blist[index] = '1'
elif value == '1':
blist[index] = '0'
#not sure how to implement two's complement from here
return x
print(intToHexaBin(-12))
我试图避免使用内置的 python 函数,因为这个函数是我学习如何进行各种转换的练习。这是一项正在进行的工作。
【问题讨论】:
-
你知道有一个名为
bin()的内置函数,对吧? -
我知道 bin()。我很欣赏这个提示,但我试图在没有内置插件的情况下做到这一点,所以我可以学习。
-
int8/16/32/64 与浮点数/负数?需要阅读更多IEEE
标签: python binary twos-complement