Wie bekomme ich die logische richtige binäre Verschiebung in Python?
Als zeigte durch die Titel. In JavaScript gibt es einen speziellen operator " >>>'. Zum Beispiel, in JavaScript haben wir das folgende Ergebnis:
(-1000) >>> 3 = 536870787
(-1000) >> 3 = -125
1000 >>> 3 = 125
1000 >> 3 = 125
Also gibt es da eine bestimmte Methode oder operator repräsentiert diese '>>>'?
InformationsquelleAutor der Frage dementrock | 2011-04-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es nicht eine built-in-operator für dieses, aber Sie können einfach simuliert die
>>>
selbst:Folgende alternative Implementierung, die beseitigt die Notwendigkeit für die
if
:InformationsquelleAutor der Antwort NPE
Nein, gibt es nicht. Die Rechte shift-in python ist der rechnerische.
InformationsquelleAutor der Antwort Femaref
Numpy bietet die
right_shift()
Funktion, die dies tut:InformationsquelleAutor der Antwort jathanism
Können Sie eine bitweise shift-Auffüllen mit Nullen mit der bitstring - Modul mit dem >>= Betreiber:
InformationsquelleAutor der Antwort Scott Griffiths
Hier ist ein Spin-Off der aix Antwort. Die normalen rechts-shift-operator wird die Arbeit, wenn Sie füttern es, einen positiven Wert, so dass Sie wirklich suchen für eine Konvertierung von signed zu unsigned.
InformationsquelleAutor der Antwort Mark Ransom
Versuchen, flip das Vorzeichen-bit eine negative Zahl, die durch Maskierung mit 0x100000000 ist grundsätzlich mißverstandener wie macht es schwer, Annahmen über die Wortlänge. In meiner Zeit als Programmierer arbeite ich mit 24-, 48-, 16-, 18-, 32-, 36- und 64-bit-zahlen. Ich habe auch gehört, der Maschinen, arbeiten auf der ungeraden Längen, wie 37, und andere, die Verwendung ones-Ergänzung, und nicht zweier-Komplement-Arithmetik (Arithmetik mit. Alle Annahmen, die Sie machen, um die interne Darstellung von zahlen, darüber hinaus sind Sie binäre, ist gefährlich.
Sogar die binäre Annahme ist nicht absolut sicher, aber ich denke, wir werden erlauben. 🙂
InformationsquelleAutor der Antwort Raphael
Müssen Sie daran denken, dass wenn die Zahl negativ ist, wird das oberste bit gesetzt ist und mit jeder Verschiebung nach rechts, die Sie brauchen, um das oberste bit gesetzt.
Hier ist meine Umsetzung:
InformationsquelleAutor der Antwort blackd0t