Python中的二进制数

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

Martijn Pieters asked 2019-10-15T21:26:03Z
8个解决方案
104 votes

您可以使用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'
John La Rooy answered 2019-10-15T21:26:13Z
9 votes

我认为您对二进制是什么感到困惑。 二进制和十进制只是数字的不同表示形式-例如 101 base 2和5 base 10是相同的数字。 运算对数字的加,减和比较操作-101 base 2 == 5 base 10和加法是相同的逻辑运算,无论您使用的是什么基数。Python解释器可以在内部将内容存储为二进制的事实并没有 不会影响您的使用方式-如果您使用的是整数类型,则只需使用+,-等。

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

Steven Schlansker answered 2019-10-15T21:26:44Z
7 votes

如果您正在谈论按位运算符,那么您会:

~ Not
^ XOR
| Or
& And

否则,二进制数字与十进制数字完全一样,因为无论您如何看,数字都是数字。 十进制和二进制之间的唯一区别是查看数据时如何表示数据。

Smashery answered 2019-10-15T21:27:15Z
3 votes

二进制,十进制,十六进制...基数仅在读取或输出数字时才重要,添加二进制数与添加十进制数相同:仅是表示形式。

Pierre Bourdon answered 2019-10-15T21:27:38Z
0 votes

下面是对以前发布的函数的重写:

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:]
mastueben answered 2019-10-15T21:28:01Z
-1 votes

不确定是否有帮助,但我将解决方案留在这里:

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"))
Mona Jalal answered 2019-10-15T21:28:25Z
-3 votes

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

user9491697 answered 2019-10-15T21:28:48Z
-4 votes

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

user5554869 answered 2019-10-15T21:29:13Z
translate from https://stackoverflow.com:/questions/1523465/binary-numbers-in-python