Làm thế nào tôi có thể thêm, trừ và so sánh các số nhị phân trong Python mà không chuyển đổi thành thập phân?
Đã hỏi ngày 6 tháng 10 năm 2009 lúc 3:37Oct 6, 2009 at 3:37
3
Bạn có thể chuyển đổi giữa một biểu diễn chuỗi của nhị phân bằng bin [] và 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'
Đã trả lời ngày 6 tháng 10 năm 2009 lúc 4:19Oct 6, 2009 at 4:19
John La Rooyjohn La RooyJohn La Rooy
Phù bằng vàng 287K5151 gold badges359 silver badges500 bronze badges
2
Tôi nghĩ rằng bạn đang bối rối về nhị phân là gì. Nhị phân và thập phân chỉ là những đại diện khác nhau của một số - ví dụ: 101 cơ sở 2 và 5 cơ sở 10 là cùng một số. Các hoạt động thêm, trừ và so sánh hoạt động trên các số - 101 cơ sở 2 == 5 cơ sở 10 và bổ sung là cùng một hoạt động logic cho dù bạn đang làm việc cơ sở nào. Thực tế là trình thông dịch python của bạn có thể lưu trữ mọi thứ như nhị phân không 'T ảnh hưởng đến cách bạn làm việc với nó - nếu bạn có một loại số nguyên, chỉ cần sử dụng +, -, v.v.
Nếu bạn có chuỗi các chữ số nhị phân, bạn sẽ phải viết triển khai của riêng mình hoặc chuyển đổi chúng bằng hàm INT [BinaryString, 2].
Đã trả lời ngày 6 tháng 10 năm 2009 lúc 3:44Oct 6, 2009 at 3:44
Steven Schlanskersteven SchlanskerSteven Schlansker
36,8K14 Huy hiệu vàng81 Huy hiệu bạc100 Huy hiệu đồng14 gold badges81 silver badges100 bronze badges
Nếu bạn đang nói về các nhà khai thác bitwise, thì bạn sẽ sau:
~ Not
^ XOR
| Or
& And
Mặt khác, số nhị phân hoạt động chính xác giống như số thập phân, bởi vì các số là số, bất kể bạn nhìn chúng như thế nào. Sự khác biệt duy nhất giữa thập phân và nhị phân là cách chúng ta đại diện cho dữ liệu đó khi chúng ta đang xem xét nó.
Đã trả lời ngày 6 tháng 10 năm 2009 lúc 3:54Oct 6, 2009 at 3:54
SmasherysmasherySmashery
55.6K30 Huy hiệu vàng97 Huy hiệu bạc125 Huy hiệu Đồng30 gold badges97 silver badges125 bronze badges
1
Nhị phân, thập phân, thập lục phân ... cơ sở chỉ quan trọng khi đọc hoặc xuất số, thêm số nhị phân giống như thêm số thập phân: đó chỉ là vấn đề đại diện.
Đã trả lời ngày 6 tháng 10 năm 2009 lúc 3:44Oct 6, 2009 at 3:44
Steven Schlanskersteven SchlanskerPierre Bourdon
36,8K14 Huy hiệu vàng81 Huy hiệu bạc100 Huy hiệu đồng4 gold badges33 silver badges27 bronze badges
Nếu bạn đang nói về các nhà khai thác bitwise, thì bạn sẽ sau:
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:]
Mặt khác, số nhị phân hoạt động chính xác giống như số thập phân, bởi vì các số là số, bất kể bạn nhìn chúng như thế nào. Sự khác biệt duy nhất giữa thập phân và nhị phân là cách chúng ta đại diện cho dữ liệu đó khi chúng ta đang xem xét nó.
Đã trả lời ngày 6 tháng 10 năm 2009 lúc 3:5411 gold badges32 silver badges50 bronze badges
SmasherysmasheryDec 15, 2017 at 2:59
'''
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']]
55.6K30 Huy hiệu vàng97 Huy hiệu bạc125 Huy hiệu Đồng
Nhị phân, thập phân, thập lục phân ... cơ sở chỉ quan trọng khi đọc hoặc xuất số, thêm số nhị phân giống như thêm số thập phân: đó chỉ là vấn đề đại diện.Feb 19, 2020 at 5:22
Gary02127Gary02127Gary02127
Pierre Bourdonpierre Bourdon1 gold badge23 silver badges28 bronze badges
1
102K4 Huy hiệu vàng33 Huy hiệu bạc27 Huy hiệu đồng
Dưới đây là viết lại chức năng được đăng trước đó:
Tom Aranda
5.71811 Huy hiệu vàng32 Huy hiệu bạc 50 Huy hiệu Đồng
Đã trả lời ngày 15 tháng 12 năm 2017 lúc 2:5925 gold badges87 silver badges115 bronze badges
Tôi để lại Func trừ như một bài tập cho người đọc.Mar 4 at 2:28
Đã trả lời ngày 19 tháng 2 năm 2020 lúc 5:22
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"]]
4.7811 Huy hiệu vàng23 Huy hiệu bạc28 Huy hiệu đồngJun 1, 2016 at 5:49
Ví dụ: 00000011 - 00000001 = 00000010Mona Jalal
Bạn có thể loại bỏ các số 0 và sau đó thêm chúng một lần nữa sau khi bạn thực hiện tính toán của bạn! Điều này hoạt động rất dễ dàng.62 gold badges215 silver badges380 bronze badges
Nếu nhị phân của bạn được lưu trữ dưới dạng chuỗi thì bạn có thể chuyển đổi sang INT sẽ tự động tước số 0 từ đầu. Sau khi bạn có câu trả lời của bạn, bạn có thể biến nó trở lại thành một chuỗi và thêm các số 0 để bắt đầu.
Gino Mempin
21.4K25 Huy hiệu vàng87 Huy hiệu bạc115 Huy hiệu đồng5 gold badges23 silver badges40 bronze badges
Đã trả lời ngày 4 tháng 3 lúc 2:28Mar 14, 2018 at 13:19
0
Không chắc có hữu ích không, nhưng tôi để lại giải pháp của mình ở đây:
Đã trả lời ngày 1 tháng 6 năm 2016 lúc 5:49
Mona Jalalmona Jalal27 gold badges272 silver badges380 bronze badges
31.6K62 Huy hiệu vàng215 Huy hiệu bạc380 Huy hiệu đồngNov 12, 2015 at 13:19
1