Python中的二进制数字

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

你可以使用bin()和int()来在二进制的string表示之间进行转换

>>> 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' 

我想你对什么是二进制是困惑的。 二进制和十进制只是一个数字的不同表示 – 例如101基数2和5基数10是相同的数字。 操作增加,减less和比较对数字进行操作 – 101 base 2 == 5 base 10和add是相同的逻辑操作,不pipe你在哪个基地工作。事实上你的python解释器可能把东西存储为内部的二进制文件不影响你如何使用它 – 如果你有一个整数types,只需使用+, – 等。

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

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

 ~ Not ^ XOR | Or & And 

否则,二进制数与十进制数完全一样,因为数字是数字,不pipe你怎么看。 十进制和二进制之间的唯一区别是我们在查看数据时如何表示这些数据。

二进制,十进制,hex…只有在读取或输出数字时,基数才是重要的,添加二进制数字与添加十进制数字是一样的:这仅仅是一个表示的问题。

不知道是否有帮助,但我在这里留下我的解决scheme:

 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")) 

我想你对什么是二进制是困惑的。 二进制和十进制只是一个数字的不同表示 – 例如101基数2和5基数10是相同的数字。 操作增加,减less和比较对数字进行操作 – 101 base 2 == 5 base 10和add是相同的逻辑操作,不pipe你在哪个基地工作。