将负整数转换为二进制

时间:2017-02-23 06:51:03

标签: python binary twos-complement

我正在使用此函数将整数转换为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函数,因为这个函数对我来说是学习如何进行各种转换的习惯。这是一项正在进行的工作。

1 个答案:

答案 0 :(得分:0)

我看到的最简单的解决方案如下:

mtcars %>% ggvis(x = ~wt) %>% layer_smooths(y = ~mpg)

def intToHexaBin(num): if num < 0: return '-' + intToHexaBin(-num) # continue code here 语句退出代码,忽略可能跟随的内容,因此在将负值传递给函数的情况下,它只会将return添加到正转换后的答案中。 / p>