Ein Bitweiser Rechner arbeitet auf dem 32-Bit-Wort, das die Maschine wirklich speichert, nicht auf der Dezimalzahl, die Sie getippt haben. Der Bitweiser Rechner nimmt zwei Zahlen, wendet eine von sieben Operationen an (AND, OR, XOR, NOT A, NOT B, Linksschieben, Rechtsschieben) und druckt das Ergebnis in fünf Basen auf einmal: Dezimal, Hexadezimal, 8-Bit-Binär, 32-Bit-Binär und Oktal. Nichts wird hochgeladen; die Operationen laufen auf den JavaScript-Ganzzahlen des Browsers. Dieser Beitrag geht jede Operation mit durchgerechneten Zahlen durch, zeigt, wo das Vorzeichenbit in die Verschiebungen kriecht, und die Masken, die AND zum Arbeitstier des Byte-Ebenen-Codes machen.
Sieben Operationen auf einem 32-Bit-Wort
Die drei paarweisen Operationen wirken auf jede Bit-Position. 12 ist 0b1100 und 10 ist 0b1010: AND behält nur die Positionen, in denen beide eine 1 haben, also 12 AND 10 = 0b1000 = 8; OR behält die Position, in der mindestens eine eine 1 hat, also 12 OR 10 = 0b1110 = 14; XOR behält die Position, in der genau eine eine 1 hat, also 12 XOR 10 = 0b0110 = 6. Die beiden NOT-Buttons invertieren jedes Bit eines Operanden: 5 ist 0b0101, und die invertierte Form 0b1010 ist die Zweierkomplement-Lesart von -6, die im 32-Bit-Hexadezimal als 0xFFFFFFFA gedruckt wird. Die beiden Verschiebungen bewegen die Bits: 1 um 4 nach links geschoben ist 16, und 1024 um 2 nach rechts geschoben ist 256. Wenn Sie denselben Wert in einem anderen System ohne Berührung der Bits wollen, macht der Zahlensystem-Umrechner die reine Umrechnung.
Drei Eingabe-Systeme, ein 32-Bit-Wert
Jedes Feld akzeptiert plain Dezimal, Hexadezimal mit 0x-Präfix und Binär mit 0b-Präfix, und der Parser hält dahinter eine einzige 32-Bit-Ganzzahl. 0xFF AND 0x0F = 15 ist die Low-Nibble-Maske, die Sie in jedem Byte-Protokoll sehen. Beim Tippen echoet das Tool jeden Operanden als 32-Bit-Binärzeichenkette in Nibble-Gruppen, und das Ergebnis-Panel zeichnet die unteren 8 Bits als acht leuchtende oder dunkle Boxen: 255 zündet alle acht, 16 zündet eine einzige. Diese Gruppen mit dem Auge zu lesen ist dieselbe Fähigkeit wie Text in Binärcodes zu verwandeln, und der Text/Binär-Konverter trainiert sie Buchstabe für Buchstabe.
Verschiebungen, Vorzeichenbit und die 31-Maske
Die Rechtsschiebung ist arithmetisch: sie kopiert das Vorzeichenbit beim Verschieben, also ist -8 = 0xFFFFFFF8, und -8 um 1 nach rechts geschoben ergibt 0xFFFFFFFC = -4, nicht 0x7FFFFFFC. Die Linksschiebung füllt von rechts Nullen, aber Bit 31 ist das Vorzeichenbit des 32-Bit-Worts, also ist 1 um 30 nach links geschoben 1073741824 (0x40000000), noch positiv, während 1 um 31 nach links geschoben -2147483648 ist, die kleinste negative Zahl. Der Verschiebebetrag wird zuerst auf 0-31 gemaskt: 1 um 33 nach links geschoben verhält sich exakt wie 1 um 1 geschoben und liefert 2. Kein Fehler, keine Überlauf-Meldung. Ein Byte aus einem Wort zu ziehen ist das Alltagsmuster: 0xFF00 um 8 nach rechts geschoben ergibt 255. Für Byte-Ebenen-Rundfahrten zwischen Hexadezimal und UTF-8 ist der Hex UTF-8 Base64 Umrechner der Bruder dieser Ansicht.
Fünf Ausgabe-Systeme auf einmal
Das Ergebnis-Panel zeigt denselben Wert fünfmal: Dezimal, Hexadezimal (Großbuchstaben, 0x-Präfix), 8-Bit-Binär, 32-Bit-Binär und Oktal. 255 wird als 255, 0xFF, 0b1111 1111, die 32-Bit-Kette mit den oberen 24 Bits auf null, und 0o377 gedruckt. Die Oktal-Spalte ist kein Schmuck: das Dateiberechtigungs-Dreier ist oktal, weil jede Ziffer genau eine Gruppe von 3 Berechtigungs-Bits ist, also ist 0o755 das 9-Bit-Wort 0b111101101, das ist rwxr-xr-x und 493 im Dezimalsystem. Der Chmod-Rechner faltet dieses Dreier in die Zeilen Eigentümer, Gruppe und andere auf, die die Bit-Ebenen-Ansicht dieser Spalte ist.
Masken: die Alltagsarbeit von AND
AND mit einer kleinen Zahl behält nur die niedrigen Bits: 0xFF AND 0x0F = 15, und -1 AND 7 = 7, weil -1 alle Einsen ist. Ein einzelner Flag-Test ist Wert AND (1 << n): wenn die Antwort nicht 0 ist, ist Bit n gesetzt. XOR ist sein eigenes Inverses, also ist es eine Einzeilen-Chiffre: 65 XOR 42 = 107 und 107 XOR 42 = 65; ein Byte, zweimal mit demselben Schlüssel XORiert, kommt unverändert zurück. 15 in den drei kompakten Systemen ist 0b1111, 0o17 und 0xF. Kodierungen, die Bytes in Text packen wie Base64, sitzen auf derselben 6-Bit-Gruppe dieser Sektion, und der Base64-Encoder/-Decoder zeigt die Zuordnungstabelle.
Dasselbe 0 und 1 überall
Die bitweise Mathematik ist die kleine Schicht unter allem, was in Bytes zählt. Der Text-zu-Binär-Führer schneidet Zeichen von Hand in 8-Bit-Gruppen; der Hash-Generator mischt danach den ganzen Puffer mit genau diesen Operationen, AND, OR, XOR und Rotationen, bis eine 32-Bit-Verdauung herauskommt. Wenn die Frage ist, in welchem System man einen Wert liest, fangen Sie bei den Bits an: jedes System auf dieser Seite, von den 8-Bit-Boxen hier bis zu den Oktal-Ziffern der Berechtigungen, ist dasselbe 32-Bit-Wort in anderer Notation. Der Rechner ist der Ort, an dem dieses Wort aufhört, abstrakt zu sein: zwei Eingaben, eine Operation, fünf Lesarten.