Python中的二进制数

时间:2009-10-06 03:37:55

标签: python binary

如何在Python中添加,减去和比较二进制数而不转换为十进制?

9 个答案:

答案 0 :(得分:108)

您可以使用bin()和int()

在二进制文件的字符串表示形式之间进行转换
>>> bin(88)
'0b1011000'
>>> int('0b1011000', 2)
88
>>> 

>>> a=int('01100000', 2)
>>> b=int('00100110', 2)
>>> bin(a & b)
'0b100000'
>>> bin(a | b)
'0b1100110'
>>> bin(a ^ b)
'0b1000110'

答案 1 :(得分:9)

我认为你对二进制文件感到困惑。二进制和十进制只是数字的不同表示 - 例如101基座2和5基座10的数量相同。对数字进行加法,减法和比较操作 - 101 base 2 == 5 base 10,无论你使用什么基础,加法都是相同的逻辑运算。你的python解释器可以在内部存储二进制的事实这会影响你如何使用它 - 如果你有一个整数类型,只需使用+, - 等等。

如果你有二进制数字字符串,你必须编写自己的实现或使用int(binaryString,2)函数转换它们。

答案 2 :(得分:7)

如果你在谈论按位运算符,那么你就是在追求:

~ Not
^ XOR
| Or
& And

否则,二进制数与十进制数完全相同,因为数字是数字,无论你如何看待它们。十进制和二进制之间的唯一区别是我们在查看数据时如何表示数据。

答案 3 :(得分:3)

二进制,十进制,十六进制......基数只在读取或输出数字时很重要,添加二进制数与添加十进制数相同:它只是表示的问题。

答案 4 :(得分:0)

下面是对以前发布的功能的重写:

def addBinary(a, b): # Example: a = '11' + b =' 100' returns as '111'.    
    for ch in a: assert ch in {'0','1'}, 'bad digit: ' + ch    
    for ch in b: assert ch in {'0','1'}, 'bad digit: ' + ch    
    sumx = int(a, 2) + int(b, 2)    
    return bin(sumx)[2:]

答案 5 :(得分:0)

'''
I expect the intent behind this assignment was to work in binary string format.
This is absolutely doable.
'''

def compare(bin1, bin2):
    return bin1.lstrip('0') == bin2.lstrip('0')

def add(bin1, bin2):
    result = ''
    blen = max((len(bin1), len(bin2))) + 1
    bin1, bin2 = bin1.zfill(blen), bin2.zfill(blen)
    carry_s = '0'
    for b1, b2 in list(zip(bin1, bin2))[::-1]:
        count = (carry_s, b1, b2).count('1')
        carry_s = '1' if count >= 2 else '0'
        result += '1' if count % 2 else '0'
    return result[::-1]

if __name__ == '__main__':
    print(add('101', '100'))

我把减法函数留给读者练习。

答案 6 :(得分:-1)

不确定是否有帮助,但我在此处留下了解决方案:

class Solution:
    # @param A : string
    # @param B : string
    # @return a strings
    def addBinary(self, A, B):
        num1 = bin(int(A, 2))
        num2 = bin(int(B, 2))
        bin_str = bin(int(num1, 2)+int(num2, 2))
        b_index = bin_str.index('b')
        return bin_str[b_index+1:]

s = Solution()
print(s.addBinary("11", "100"))

答案 7 :(得分:-3)

x = x + 1 打印(X) a = x + 5 打印(a)中

答案 8 :(得分:-4)

我认为你对二进制文件感到困惑。二进制和十进制只是数字的不同表示 - 例如101基座2和5基座10的数量相同。对数字进行加法,减法和比较操作 - 101 base 2 == 5 base 10,无论你使用什么基础,加法都是相同的逻辑运算。