Jak mogę dodawać, odejmować i porównywać liczby binarne w Pythonie bez konwersji na dziesiętne?Numery binarne w Pythonie
Odpowiedz
można konwertować między ciągu reprezentującego binarnego za pomocą bin() oraz 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'
Dziękuję. Tak, jest to zadanie domowe. Przypis mówi, że mam pozostawić liczby w "formacie binarnym" podczas wykonywania ._add, ._sub, ._gt, ._lt i ._eq. Twój przykład powyżej wydaje się konwertować z bin na int. Nie jestem pewien, czy to będzie akceptowalne, ale nie widzę innego sposobu, z wyjątkiem twojego przykładu. –
Możesz również użyć literału binarnego, gdy używasz Pythona 2.6 i wyżej. Zamiast 'int ('01100111', 2)' piszesz '0b01100111' na przykład, który jest' 103'. – Joschua
Binarny, dziesiętny, szesnastkowy ... podstawa ma znaczenie tylko przy odczytywaniu lub wysyłaniu liczb, dodawanie liczb binarnych jest takie samo jak dodawanie liczby dziesiętnej: jest to tylko kwestia reprezentacji.
Myślę, że nie masz pojęcia, czym jest plik binarny. Binarne i dziesiętne są po prostu różnymi reprezentacjami liczby - np. 101 baz 2 i 5 baz 10 to ta sama liczba. Operacje dodawania, odejmowania i porównywania działają na liczbach - 101 base 2 == 5 base 10, a dodawanie jest tą samą operacją logiczną, bez względu na to, w jakiej bazie pracujesz. Fakt, że twój interpreter python może przechowywać rzeczy jako pliki binarne wewnętrznie nie działa wpływa na sposób pracy z nim - jeśli masz typ całkowity, po prostu użyj +, -, itd.
Jeśli masz ciągi cyfr binarnych, musisz napisać własną implementację lub przekonwertować je za pomocą funkcja int (binaryString, 2).
Jeśli mówisz operatorów bitowe, to jesteś po:
~ Not
^ XOR
| Or
& And
Inaczej liczb binarnych działa dokładnie tak samo jak liczby dziesiętne, ponieważ liczby są liczbami, bez względu na to, jak wyglądasz w nich . Jedyną różnicą między dziesiętnym a binarnym jest to, jak reprezentujemy te dane, kiedy na nie patrzymy.
Zawsze fajnie jest pisać add, sub itp z operatorami bitowymi. Dla każdego, kto jest zainteresowany, szukaj przewodników po obwodach, dokładniej pół dodawcach, potem pełnych adderach, a na końcu odciąganiu, a może nawet dodatku-substrakcji. Stąd możesz przetłumaczyć go na operatorów bitowych. –
myślę, że jesteś mylić o co binarny jest. Binarne i dziesiętne są po prostu różnymi reprezentacjami liczby - np. 101 baz 2 i 5 baz 10 to ta sama liczba. Operacje dodawania, odejmowania i porównywania działają na liczbach - 101 podstawa 2 == 5 podstawa 10 i dodawanie to ta sama logiczna operacja bez względu na to, w jakiej bazie pracujesz.
Nie jestem pewien, czy pomocny, ale zostawiam mój rozwiązanie tutaj:
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"))
Poniżej znajduje się re-write uprzednio pisał funkcji:
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:]
- 1. binarne programowanie liniowe w Pythonie
- 2. Binarne przesunięcie fazowe w Pythonie
- 3. numery Formatowanie konsekwentnie w Pythonie
- 4. Slick sposób odwrócić (binarne) cyfry liczby w Pythonie?
- 5. Dopasowany binarne w Erlang
- 6. Analog MemoryStream w Pythonie
- 7. Bajty na binarne w C
- 8. Tokenising dane binarne w java
- 9. Odtwarzanie binarne w Visual C++
- 10. Jak pisać dane binarne w stdout w python 3?
- 11. Numery stron w stylu LLNCS
- 12. Rosnące numery w definicji makra
- 13. Elixir - Randomizowane numery w Agenta
- 14. sortować numery w jednej linii
- 15. Jak utworzyć drzewo binarne
- 16. Bezlistne wyszukiwanie binarne
- 17. OCaml: rysuj drzewa binarne
- 18. Przechowuj dane binarne mysql
- 19. C# - Proste drzewo binarne
- 20. Python POST dane binarne
- 21. Drzewo binarne Pierwsze wyszukiwanie
- 22. Ubuntu: Jak połączyć binarne
- 23. Sortowanie sekwencje binarne R
- 24. C czyta pliki binarne
- 25. Dziwne binarne ELF
- 26. Wyszukiwanie binarne w tablicy w Perlu
- 27. JAVA: drzewa binarne
- 28. Tornado websockets obsługujące binarne
- 29. Java - przetwarza binarne długo
- 30. stream.io strumieniowe dane binarne
Czy to pytanie zadania domowe, tj pytasz jak to zrobić matematyki na niskim poziomie? Zobacz (http://stackoverflow.com/questions/1149929/how-to-add-two-numbers-without-using-or-an-inother-arithmetic-operator/1150996#1150996) –
Czy możesz podać kilka przykładów próbujesz osiągnąć? Numery –
są już binarne w pythonie. Są konwertowane na binarne, gdy program się uruchamia i są konwertowane z powrotem na dziesiętne, gdy używasz czegoś takiego jak str() lub drukuje –