Der erste Fehler, der mich lehrte, Bitbreiten zu respektieren, war ein Berechtigungsflag, das sich immer wieder von selbst löschte. Ich habe eine Bitmask in eine ganzzahlige Spalte GEORTET, und hin und wieder wurde das ganze Feld zurückgesetzt. Die Ursache war peinlich, als ich es sah: Ich dachte über die Bits nach, als ob sie in 32 Slots lebten, aber der Wert war bereits verbreitert und ein Streuner NICHT irgendwo stromaufwärts hatte Bits umgedreht, die ich nie berücksichtigt hatte. Ich habe es behoben, indem ich mich mit einem Taschenrechner zusammensetzte, der mir die tatsächlichen Bits in der tatsächlichen Breite zeigte, nicht die ordentliche Dezimalzahl, die meine Sprache gedruckt hat. In diesem Leitfaden geht es um diese Gewohnheit, die ich benutze Binärrechner Auf Toolz.dev, und warum bitweises Rechnen, bei dem Sie jede Basis auf einmal sehen können, stundenlanges Raten spart.
tl; dr: Ein Binärrechner führt arithmetische (addieren, subtrahieren, multiplizieren, dividieren) und bitweise Operationen (AND, OR, XOR, NOT, Shifts) an ganzen Zahlen durch, die in Binär, Oktal, Dezimal oder Hex geschrieben sind, und zeigt das Ergebnis in allen vier Basen auf einmal an. Die Arithmetik ist bei jeder Größe exakt; bitweise Operationen hängen von einer gewählten Bitbreite ab. Die Binärrechner Tut beides, vollständig in Ihrem Browser, und meldet signierte und nicht signierte Messwerte für bitweise Ergebnisse.
Was ist ein Binärrechner?
Ein Binärrechner ist ein Werkzeug, das auf ganzen Zahlen in der Basis zwei arbeitet, aber die nützlichen sind nicht auf Basis zwei beschränkt überhaupt, Sie wählen die Basis, in der Sie denken, binär, oktal, dezimal, oder hexadezimal, tippen Sie Ihre Zahlen, wählen Sie eine Operation, und lesen Sie die Antwort Die guten zeigen, dass Antwort in jeder Basis gleichzeitig, so dass Sie nie eine separate Konvertierung zur Vernunft-Überprüfung, was Sie bekommen haben.
Der Grund dafür ist, dass Low-Level-Arbeit ständig zwischen Basen kreuzt Eine Farbe ist hex, eine Berechtigungsmaske ist binär in Ihrem Kopf aber dezimal in der Datenbank, ein Netzwerkwert ist oktal in einer Konfiguration und dezimal in einer anderen Durchrechnen an einer Stelle, mit allen sichtbaren Darstellungen, wird eine ganze Klasse von Transkriptionsfehlern entfernt Sie kopieren keinen Hexwert in einen Dezimalrechner und hoffen, dass Sie ihn zuerst richtig konvertiert haben.
Auf Toolz.dev ist der Fluss kurz Wählen Sie die Eingabebasis Geben Sie den ersten Wert ein Wählen Sie eine Operation Geben Sie den zweiten Wert ein Das Ergebnis erscheint in Binär, Oktal, Dezimal, und Hex zusammen, und für bitweise Operationen zeigt es auch die vorzeichenbehaftete Lesung und das Bitlayout in Ihrer gewählten Breite an.
Welche Operationen werden unterstützt?
Zwei Familien, und sie gerade zu halten, ist das ganze Spiel Die Rechenoperationen sind addieren, subtrahieren, multiplizieren, dividieren und modulo Diese wirken auf den wahren numerischen Wert, verhalten sich also wie gewöhnliche Mathematik und kümmern sich nicht um die Bitbreite Die Division gibt den ganzzahligen Quotienten zurück und meldet jeden Rest, und modulo gibt nur den Rest zurück, was die Unterscheidung ist, die Menschen am häufigsten rückwärts erhalten.
Die bitweisen Operationen sind UND, ODER, XOR, NAND, NOR, XNOR, NOT, und die Links - und Rechtsverschiebungen Diese wirken auf die Rohbits innerhalb eines festen Registers, daher hängt ihre Antwort ganz davon ab, wie breit dieses Register ist UND, ODER, und XOR sind die alltäglichen drei: UND maskiert Bits ab, ODER setzt Bits ein, XOR schaltet sie um Die negierten Formen, NAND, NOR und XNOR, sind ihre Komplemente innerhalb der Breite NICHT jedes Bit um Die Verschiebungen bewegen das ganze Muster um eine Anzahl von Positionen nach links oder rechts, wodurch die Bits fallen, die vom Ende.
Hier ist das schnelle mentale Modell, das ich verwende, wenn ich entscheide, welches ich möchte:
| Operation | Symbol | Familie | Typische Verwendung |
|---|---|---|---|
| Hinzufügen / Subtrahieren | + / ( | Arithmetik | Gewöhnliche Ganzzahlmathematik, jede Größe |
| Multiplizieren/Teilen | × / 3 / ( 3 ( ( ( ( ( ( () | Arithmetik | Division berichtet Quotient und Rest |
| Modulo | Mod | Arithmetik | Nur Rest, z.B. Wickelindizierung |
| UND | & | Bitweise | Maskenbits aus, testen Sie ein Flag |
| ODER | | | Bitweise | Flaggen setzen, Masken kombinieren |
| XOR | ^ | Bitweise | Bits umschalten, günstige Parität und Swaps |
| NICHT | ~ | Bitweise | Jedes Bit innerhalb der Breite umkehren |
| Links / rechts schalten | << / >> | Bitweise | Multiplizieren oder dividieren Sie durch Zweierpotenzen, Packfelder |
Warum muss ich ein bisschen Breite wählen?
Das ist die Frage, die alle neu in bitweiser Mathematik aufstöbert, und es ist die, über die der Rechner am meisten rechthaberisch ist Arithmetik hat eine offensichtliche Antwort, egal wie groß: Fünf plus drei ist acht, ob man es sich in einem Byte oder einem 64-Bit-Wort vorstellt Aber ein bitweises NICHT hat überhaupt keine Antwort, bis man weiß, wie viele Bits existieren. NICHT von fünf ist & quot; jedes Bit umdrehen, " und das Ergebnis hängt davon ab, ob es acht Bits oder vierundsechzig gibt, um zu drehen.
Verschiebungen haben die gleiche Abhängigkeit von der anderen Richtung Verschieben Sie einen Wert weit genug nach links und Bits marschieren von der oberen Kante ab Ob sie verschwinden oder wickeln hängt von der Registergröße ab Ein ganzzahliger Typ mit fester Breite in C, Java, Go oder Rust beantwortet dies, indem er die Breite vorne definiert: a uint8 Acht Bits ist, a uint32 Ist zweiunddreißig, und jede bitweise Operation geschieht innerhalb dieser Box Der Rechner spiegelt das genau wider, indem er Ihnen erlaubt, 8, 16, 32 oder 64 Bit auszuwählen, sodass das Ergebnis mit dem übereinstimmt, was Ihr tatsächlicher Code erzeugen wird, und nicht mit einer idealisierten Abstraktion unendlicher Breite.
Die Wahl der falschen Breite ist kein Rundungsfehler, es ist eine andere Antwort NICHT von fünf ist 250 in acht Bit und 4294967290 in zweiunddreißig Beide sind für ihre Breite korrekt, und keines ist für das andere richtig Gewöhnen Sie sich an, die Breite Ihrem Datentyp anzupassen, ist die nützlichste Disziplin, die dieses Tool fördert.
Wie erscheint das Two's-Komplement in den Ergebnissen?
Fast jeder Prozessor repräsentiert signierte ganze Zahlen mithilfe von zwei & #39;s ergänzen, und der Rechner folgt der gleichen Konvention, so dass seine Ausgabe mit Ihrer Hardware übereinstimmt In zwei' s ergänzen, trägt das obere Bit des Registers ein negatives Gewicht, so dass ein Acht-Bit-Muster von 11111010 als 250 lautet, wenn Sie es als unsigniert behandeln, oder als -6, wenn Sie das obere Bit als Vorzeichen lesen.
Aus diesem Grund meldet das Tool beide Messwerte für ein bitweises Ergebnis Wenn Sie NICHT auf fünf in acht Bit ausführen, erhalten Sie das Bitmuster 11111010. Der Rechner zeigt den vorzeichenlosen Wert 250, den vorzeichenbehafteten Wert -6 und das binäre Layout an, sodass Sie sehen können, dass es sich um dieselben Bits handelt, die auf zwei Arten interpretiert werden. Dieses duale Lesen ist genau das, was Sie benötigen, wenn ein Wert in Ihrem Code zwischen einem vorzeichenbehafteten und einem vorzeichenlosen Typ wechselt, was eine klassische Quelle für " impossible" Zahlen ist, die in Protokollen erscheinen.
Arithmetische Ergebnisse folgen der gleichen Regel, wenn sie negativ werden Subtrahieren Sie zwölf von fünf und die wahre Antwort ist -7, die der Rechner in Dezimalzahl mit einem Minuszeichen anzeigt, während seine binären, oktalen und hex Formen das Muster zwei' s-Komplement innerhalb Ihrer gewählten Breite verwenden, 11111001 in acht Bits. Wenn Sie den negativen Wert und sein Bitmuster nebeneinander sehen, wird die abstrakte Idee von & quot; das Vorzeichen nur das oberste Bit" schließlich klickt.
Wie addiere oder subtrahiere ich Binärzahlen von Hand und überprüfe sie hier?
Die binäre Addition folgt den gleichen Übertragsregeln wie die Dezimalzahl, mit einem kleineren Alphabet Null plus Null ist Null, Null plus Eins ist Eins, Eins plus Eins ist Null, Eins tragen, und Eins plus Eins plus Übertrag ist Eins Eins Übertragen Sie Eins Also 1010 plus 1100 arbeitet Spalte für Spalte von rechts: 0+0 ist 0, 1+0 ist 1, 0+1 ist 1, 1+1 ist 0, tragen Sie 1, und der Übertrag wird zum führenden Bit, was 10110 ergibt, was 22 in Dezimal ist. Das Einstanzen in den Taschenrechner bestätigt es in jeder Basis auf einmal, und so überprüfe ich es, wenn ich es für ein Unterrichten oder lehre.
Subtraktion ist, wo zwei' s komplement seinen behalten verdient Anstatt spaltenübergreifend zu leihen, subtrahieren Computer durch Addition des Negativen, und das Negative wird durch Invertieren der Bits und Addition eines gebildet Das müssen Sie selten von Hand tun, aber es erklärt, warum der Rechner sauber in den negativen Bereich subtrahieren kann: 5 minus 12 wird 5 plus die zwei' s-Komplement von 12, und das Ergebnis ist das oben beschriebene Muster -7. Wenn Sie einen einzelnen Wert zwischen Basen verschieben möchten, ohne darauf zu rechnen, wird die Zahlenbasiskonverter Begleitwerkzeug ist, und die Binärübersetzer Behandelt den Fall, dass Sie Text in Bits umwandeln, anstatt zu arithmetischen.
Wann spielen bitweise Operationen eigentlich eine Rolle?
Häufiger als Anfänger erwarten, und an Orten, die nicht offensichtlich & quot; low level." Berechtigungssysteme sind der klassische Fall: ein Satz von Flags, die in eine ganze Zahl gepackt sind, wo Sie ODER eine Berechtigung erteilen, UND mit einer Ergänzung, um sie zu widerrufen, und eine zu testen Feature-Toggles, Unix-Dateimodi und Hardware-Registerkarten verwenden alle dasselbe Muster Wenn Sie jemals einen Wert wie 0o755 oder eine Konstante gesehen haben, die als definiert ist 1 << 3„Sie haben Bit Packing kennengelernt.
XOR taucht in billigen Tricks und echten Algorithmen gleichermaßen auf: ein bisschen umschalten, Rechenparität, und das klassische Swap-ohne-Tempo Verschiebungen multiplizieren und dividieren durch Zweierpotenzen, die weit schneller sind als die allgemeine Multiplikation, und sie packen mehrere kleine Felder in ein Wort, so bleiben Farbwerte, Netzwerk-Header, kompakte Serialisierungsformate kleinIch habe diese ständig aufbauend über den Stapel geschlagen, von einer Laravel-API, die Rollenflags als Bitmaske speichert, bis zu einer React-Leinwand, die RGBA aus einer gepackten Ganzzahl liest Das Verstehen der Vorgänge ist eine kleine Investition, die sich überall zurückzahlt, und ich habe darüber geschrieben, wie diese in ein breiteres Kit passen Entwicklerproduktivitätstools Stück.
Die subtilen Fehler sind es, die einen sichtbaren Taschenrechner verwendenswert machen Eine Maske, die mit der falschen Breite angewendet wird, behält oder lässt Bits, die Sie nicht beabsichtigt haben, stillschweigend zurück Eine Verschiebung, die 32 Bit angenommen hat, verhält sich anders bei 64. Ein vorzeichenbehafteter Wert ANDed gegen eine vorzeichenlose Maske erzeugt eine Zahl, die unmöglich aussieht, bis Sie die zwei' s-Komplement-Bits sehen. Wenn Sie beobachten, wie sich das Bitlayout ändert, während Sie die Breite anpassen, werden diese Fehler aus Mysterien in offensichtliche Fehler verwandelt.
Auch hier gibt es einen Lehrwinkel. Wenn ich Bitmasken jemandem neu erkläre, sind Dezimalzahlen nutzlos: 12 UND 10 8 zu sein bedeutet nichts, bis Sie 1100 und 1010 aufstellen und beobachten, wie die UND nur die Spalte behalten, in der beide 1 sind. Weil der Rechner das binäre Layout neben Dezimal, Oktal und Hex anzeigt, bedeutet dies nichts, und die Operation hört auf, eine Regel zum Auswendiglernen zu sein, und wird zu etwas, das Sie sehen können. Das Gleiche gilt für Verschiebungen, bei denen die Anzeige, dass eine Linksverschiebung um eins den Wert verdoppelt, während jedes verbleibende Bit verschoben wird, verbindet die arithmetische Bedeutung auf eine einzelne Zahl niemals mit der Bit-Level-Mechanik.
Wo liegen die Grenzen und sind meine Daten privat?
Die arithmetische Seite hat praktisch keine Größenbeschränkung Der Rechner verwendet JavaScript' s BigIntEin ganzzahliger Typ mit beliebiger Genauigkeit, standardisiert in ECMAScript„Das Addieren oder Multiplizieren von Zahlen mit Dutzenden von Ziffern bleibt also exakt und ohne stummen Überlauf. Dies ist ein echter Vorteil gegenüber Taschenrechnern, die auf gewöhnlichen Gleitkommazahlen basieren, die über etwa fünfzehn Ziffern hinaus an Präzision verlieren und große ganze Zahlen überhaupt nicht genau darstellen können.
Die bitweise Seite wird bewusst durch die gewählte Breite begrenzt, denn das ist der Punkt: Eine Operation mit fester Breite macht nur innerhalb eines festen Registers Sinn, wenn man einen Wert eingibt, der größer ist, als die Breite halten kann, reduziert der Rechner ihn auf diese Breite und warnt einen, so dass eine Kürzung nie stillschweigend erfolgt Verschiebungen werden auf ein vernünftiges Maximum gedeckelt, damit ein außer Kontrolle geratener Verschiebungsbetrag die Seite nicht hängen lässt.
Zum Datenschutz läuft alles in Ihrem Browser Nichts, was Sie eingeben, wird hochgeladen, protokolliert oder gespeichert, und das Tool funktioniert weiter, wenn Sie nach dem Laden der Seite die Verbindung zum Internet trennen Das ist wichtiger, als es klingt: Die Werte, die Menschen durch einen bitweisen Rechner laufen, sind oft Berechtigungsmasken, Token oder Hardwareadressen von Systemen, die sie lieber nicht in einen Server einfügen möchten, den sie nicht kontrollieren Wenn Sie sich darum kümmern, welche Tools Ihre Daten auf Ihrem Computer aufbewahren, wird die Datenschutz in Online-Tools Ratgeber behandelt, wie man clientseitige Werkzeuge von solchen, die nach Hause telefonieren, für benachbarte Arbeiten auf niedriger Ebene, die IEEE 754 Konverter und das ASCII-Tisch Satz abrunden.
Häufig gestellte Fragen
Wie addiere ich zwei Binärzahlen?
Setzen Sie die Eingabebasis auf binär, geben Sie die erste Zahl ein, wählen Sie Add, geben Sie die zweite Zahl ein und lesen Sie das Ergebnis aus. 1010 plus 1100 ist beispielsweise 10110, was das Werkzeug auch als 22 in der Dezimalzahl, 26 in der Oktalzahl und 16 in der Hex-Arithmetik in jeder Länge exakt anzeigt.
Was ist der Unterschied zwischen arithmetischen und bitweisen Operationen?
Arithmetische Operationen (addieren, subtrahieren, multiplizieren, dividieren, modulo) wirken auf den wahren numerischen Wert und sind unabhängig von der Bitbreite. Bitweise Operationen (AND, OR, XOR, NOT und Shifts) wirken auf die Rohbits innerhalb eines Registers mit fester Breite, sodass ihr Ergebnis davon abhängt, ob Sie 8, 16, 32 oder 64 Bit wählen.
Warum muss ich ein bisschen Breite wählen?
NOT und Shiftoperationen haben erst dann eine definierte Antwort, wenn die Registergröße bekannt ist, denn sie hängen davon ab, welche Bits existieren und welche vom Ende fallen Durch die Auswahl von 8, 16, 32 oder 64 Bit passt der Rechner dazu, wie sich ein bestimmter ganzzahliger Typ in einer echten Programmiersprache verhält.
Wie geht der Rechner mit negativen Ergebnissen um?
Negative arithmetische Ergebnisse werden mit einem Minuszeichen in Dezimalzahl angezeigt, und ihre binären, oktalen und hex-Formen verwenden zwei' s-Komplement innerhalb der ausgewählten Breite Für bitweise Ergebnisse meldet das Tool sowohl den vorzeichenlosen Wert als auch den vorzeichenbehafteten zwei' s-Komplementwert.
Kann ich Basen mischen, wie zum Beispiel eine Hex-Zahl zu einer Dezimalzahl hinzufügen?
Beide Operanden werden in der von Ihnen ausgewählten Einzelbasis ausgelesen, so dass Sie Basen nicht in einer Berechnung mischen können Um ein Hex - und einen Dezimalwert zu kombinieren, konvertieren Sie zunächst einen von ihnen, geben Sie dann beide in derselben Basis ein Das Ergebnis wird immer in allen vier Basen angezeigt.
Was macht der Rechner, wenn ich teile?
Division gibt den ganzzahligen Quotienten zurück, und wenn die Division nicht exakt ist meldet das Tool den Rest als Anmerkung Um den Rest von selbst zu erhalten, verwenden Sie stattdessen die Modulo-Operation, die nur den Rest zurückgibt.
Wie groß dürfen die Zahlen sein?
Die Arithmetik verwendet JavaScript BigInt, sodass Zahlen mit vielen Dutzend Ziffern genau ohne Überlauf behandelt werden. Bitweise Operationen werden durch die gewählte Breite begrenzt; Werte, die diese überschreiten, werden auf diese Breite reduziert, und das Tool warnt Sie, wenn das passiert.
Werden meine Daten irgendwo hin gesendet?
Nein. Jede Berechnung läuft als JavaScript in Ihrem Browser Nichts, was Sie eingeben, wird übertragen, protokolliert oder gespeichert, und das Tool funktioniert weiter, wenn Sie nach dem Laden der Seite die Verbindung zum Internet trennen.
Probieren Sie die Rechnung selbst mit dem kostenlosen Binärrechner. Es verarbeitet arithmetische und bitweise Operationen über Binär-, Oktal-, Dezimal- und Hex-Operationen vollständig in Ihrem Browser, ohne dass etwas hochgeladen wurde.



