Inhaltsverzeichnis:
Video: Grundlagen der C Programmierung - Bitmasken 2024
Zum Glück müssen Sie kein digitales Gerät programmieren, indem Sie Low-Level-Code schreiben, Schalter umdrehen oder Lötdrähte. Das liegt daran, dass die heutige C-Programmierung auf einer höheren Ebene stattfindet. Aber tief in der Maschine setzt sich diese Art der Low-Level-Codierung fort. Sie sind nur von der ursprünglichen Suppe von Einsen und Nullen isoliert, von der alle Software aufsteigt.
Einführung in binär
Die binären Ziffern, oder Bits , sind 1 und 0. Alleine sind sie schwach; aber in Gruppen haben sie große Macht. Digitaler Speicher verwendet diese Bits in Gruppen.
Term | C Variable | Bits | Wertebereich ohne Vorzeichen | Wertebereich signiert |
---|---|---|---|---|
Bit | _Bool | 1 > 0 bis 1 | 0 bis 1 | Byte |
char | 8 | 0 bis 255 | -128 bis 127 | Wort |
kurz int | 16 > 0 bis 65, 535 | -32, 768 bis 32, 767 | Long | long int |
32 | 0 bis 4, 294, 967, 295 | -2, 147, 483, 648 bis 2, 147, 483, 647 |
|
Der Vorteil der Gruppierung von Bits in Bytes, Wörter usw. besteht darin, dass sie einfacher zu handhaben sind. Der Prozessor kann besser mit Informationen in Chunks umgehen. Wie Chunks ihre Werte erhalten, basiert auf Potenzen von 2. |
Ausdruck
Binärwert | 2 | 0 |
---|---|---|
1 1 > 2 | 1 | 2 |
10 2 2 4 100 2 3 8 1000 2 4 | 16 | 10000 |
2 5 | 32 | 100000 |
2 6 64 1000000 2 > 7 | 128 | 10000000 |
|
Tatsächlich finden Sie 256 mögliche Werte für ein Byte, das die Null-Null-Permutation enthält. Das ist auch ein Wert. | Unten wird gezeigt, wie die Potenzen von 2 in den binären Speicher abgebildet werden. Genau wie Dezimalstellen in einer Basis 10-Zahl um Potenzen von 10 zunehmen, erhöhen sich Bits in einer Binärzahl um Potenzen von 2, wobei von rechts nach links gelesen wird. |
Jedes Bit, das gesetzt ist oder den Wert 1 hat, stellt eine Potenz von 2 dar: 2 5 | , 2 | 3 |
, 2 1 | und 2 < 0 | . Wenn Sie diese Werte mit ihren Dezimal-Entsprechungen multiplizieren und sie dann zusammenzählen, erhalten Sie die dezimale Darstellung von binärem 00101011, was 43 ist. |
Das ist alles gut und gut, aber merken Sie es bitte nicht! Befassen Sie sich nicht damit, Binärzahlen in Dezimalwerte zu übersetzen. der Computer erledigt diese Aufgabe ständig für Sie. In der Tat sieht der Computer nur binär und zeigt dann Dezimalzahlen als eine Höflichkeit für Ihre menschlichen Augäpfel an.Aber wenn Sie binäre Werte manipulieren, hilft es zu wissen, was vor sich geht. | Das Ändern des Wertes eines Bits auf 1 wird als | bezeichnet, um das Bit zu setzen. |
bezeichnet, das ein Bit zurücksetzt.
So zeigen Sie Binärwerte an
Um die Binärmanipulationsoperatoren der C-Sprache besser zu verstehen, ist es hilfreich, eine binäre Zahl in Aktion zu sehen. Die printf () - Funktion verfügt nicht über ein binäres Konvertierungszeichen und die C-Bibliothek hostet keine binäre Ausgabefunktion. Um eine Binärzahl anzuzeigen, müssen Sie eine eigene Funktion erstellen.
Die Funktion binbin () zeigt eine binäre Ausgabefunktion namens binbin () an. Die Funktion binbin (), die in Zeile 15 in der Funktion binbin () enthalten ist, verschlingt einen int-Wert. Seine Ausgabe ist eine Zeichenfolge, die diesen int-Wert in binären Ziffern darstellt. DIE BINBIN () FUNKTION #include char * binbin (int n); int main () {int Eingabe; printf ("Geben Sie einen Wert zwischen 0 und 255 ein:"); scanf ("% d", & Eingabe); printf ("% d ist binär% sn", Eingabe, binbin (Eingabe)); return (0);} char * binbin (int n) {statischer char bin [9]; int x; für (x = 0; x <8; x ++) {bin [x] = n & 0x80? '1': '0'; n << = 1;} bin [x] = "; return (bin);}
Im Allgemeinen erscheint der Inhalt der Funktion binbin () ziemlich mysteriös. Das ist in Ordnung.
-
Übung 1
-
: Geben Sie den Quellcode aus der Funktion
-
binbin () in ein neues Projekt ein und erstellen Sie es einige Male, um zu sehen, wie Ganzzahlen als Binärzahlen erscheinen.
Wie in
binbin ()
Funktion, binbin () zeigt nur 8 Datenbits an, obwohl der Typ int variable viel mehr Bits speichert. Übung 2: Ändern Sie die Funktion binbin () von binbin () Funktion, so dass 16 Bit des int-Werts angezeigt werden (technisch gesehen sind 16 Bit eine kurze int.) Dazu müssen Sie diese Elemente ändern:
Zeile 9: Ändern Sie den Text so, dass 65535 statt 255 angegeben wird. Zeile 17: Ändern Sie die Größe des Arrays auf 17, um 16 Zeichen in der Ausgabe und das (Nullzeichen) am Ende der Zeichenfolge zu berücksichtigen. Zeile 20: Stellen Sie den unmittelbaren Wert 8 im Code auf 16 ein, um alle 16 Zeichen in die Ausgabe.
Zeile 22: Ersetzen Sie den Wert 0x80 durch 0x8000. Diese Änderung vergrößert das Bitfeld.
Erstellen Sie Übung 2. Führen Sie es einige Male aus, um zu sehen, wie das Bitfeld für größere Werte aussieht.