Arithmetische Verschiebung und logische Verschiebung in C

Arithmetische Verschiebung und logische Verschiebung in C
Bitmanipulationstechniken wie logische Verschiebung und arithmetische Verschiebung werden verwendet, um die Bits zu verändern. Eine Einstellung links logische Verschiebung bewegt sich durch eins nach links nach links. Das bedeutendste Bit wird entfernt und das am wenigsten relevante Bit wird durch 0 ersetzt. Eine Ein-Position-Rechte logische Verschiebung schaltet jedes Bit nach rechts durch eins. Das am wenigsten wichtige Bit wird entfernt und der Operand wird um 0 wiederhergestellt.

Eine Einstellung links arithmetische Verschiebung überträgt alles nach links von nur einem. Es ist dasselbe wie die linke logische Verschiebung. Eine Einstellung mit dem rechten arithmetischen Verschiebungsschaltschaltschaltschaltschaltschaltanlagen nach rechts durch eine. Bei der Multiplikation oder Teile einer Ganzzahlzahl können arithmetische Verschiebungsfunktionen verwendet werden. Multiplizieren einer Zahl mit 2n, in der N die Anzahl der ausgetauschten Bitpositionen darstellt, ist das Ergebnis einer linken Verschiebungsmethode. Teilen Sie eine Zahl durch 2n das Ergebnis einer richtigen Verschiebungsmethode, wobei N die Anzahl der geschalteten Bitpositionen darstellt.

In diesem Artikel wird einige Techniken unter Verwendung von Bitwise Shift -Funktionen in C demonstriert.

Bewegen Sie die Ganzzahl nach links, indem Sie die verwenden << Operator

Jede Sprache beinhaltet bitweise Verschiebungstechniken, die alle von der erforderlichen Anzahl von Standorten angegeben werden. Um die Auswirkungen dieser Methoden ordnungsgemäß zu bewerten, würden wir die binäre Funktion in der vorhergehenden Situation einführen, in der die binäre Form der bereitgestellten Zahl angezeigt wird.

Diese Methode wurde nur für den Betrieb mit 32-Bit-Ziffern erstellt. Der folgende Code zeigt eine Verschiebung von vier Links und zeigt die entsprechenden numerischen Werte:

#enthalten
#enthalten
void Binär (nicht signierte Num)

nicht signiert j;
für (j = 1 < 0; j /= 4)
(num & j) ? printf ("1"): printf ("0");

int main (int argc, char *argv [])
int num1 = 456;
binär (num1); printf (": %d \ n", num1);
Num1 <<= 4;
binär (num1); printf (": %d \ n", num1);
exit (exit_success);

Zuerst stellen wir zwei Bibliotheken vor und vor . Im nächsten Schritt definieren wir die Binary () -Funktion. In der Zwischenzeit deklarieren wir einen Parameter „Unsigned Num“ für die Binary () -Funktion. Wir verwenden eine für Schleife. Hier initialisieren wir eine Variable für die Schleife innerhalb der Schleife. Der Schleifen iteriert, bis der Wert 31 erreicht. Jetzt verwenden wir die Haupt- () -Funktion außerhalb des Körpers der binären () -Funktion. Eine Variable mit einem Ganzzahl -Datentyp wird initialisiert. In ähnlicher Weise erstellen wir einen Konstruktor mit einem Zeichendatentyp.

Wir deklarieren eine Variable „Num1“ und geben ihren Wert an. Als nächstes wird dieser Wert als Argument für die Binary () -Funktion bereitgestellt. Die printf () -Funktion wird verwendet, um den binären Wert der definierten Zahl anzuzeigen. Der << operator is applied to the value of the variable “num1”. Therefore, it is used to adjust the digits to the left. Now, the binary() and print() methods are utilized to print the result after shifting the numbers.

Verwenden Sie die linke Verschiebung, um eine Zahl mit vier zu multiplizieren:

Wir werden die linke Verschiebung nutzen << more effective operation to accomplish the multiplication by four. It's important to note that there is no distinction between the logical and arithmetic shifts while moving left.

Eine bestimmte Positionsverschiebung führt zu einer Multiplikation; Folglich können wir uns überall verschieben, um die entsprechende Multiplikation zu erwerben.

#enthalten
#enthalten
void Binär (nicht signierte Num)

nicht signiert K;
für (k = 1 << 31; k > 0; K /= 4)
(Num & k) ? printf ("1"): printf ("0");

int main (int argc, char *argv [])
int num1 = 678;
printf ("%d \ n", num1);
Num1 <<= 1;
printf ("%d x 4 \ n", num1);
exit (exit_success);

Zu Beginn des Programms sind zwei Header -Dateien und sind kurz vor der Erklärung der Binary () -Methode enthalten. In der Binary () -Funktion für die Schleife wird die Variable 'k' hier initialisiert. Die printf () -Funktion wird auch verwendet, um den Wert in Form von 1s und 0s zu drucken. Zusätzlich definieren wir die main () -Funktion. Diese Funktion enthält zwei Parameter, einschließlich einer Variablen und eines Konstruktors. Der Datentyp dieser Variablen und des Konstruktors ist nicht identisch.

Darüber hinaus erstellen wir eine andere Variable und setzen den Wert dieser Variablen. Wir wenden eine Print () -Funktion an, um den tatsächlichen Binärwert der angegebenen Zahl zu demonstrieren. Im nächsten Schritt verwenden wir das << operator to move the digits to the left of the defined value. Once again, the printf() method gets the output after shifting the digits and multiplying the value by 4. In this way, we have to end the code.

Bewegen Sie die Ganzzahlen nach rechts und verwenden Sie den >> Bediener

Es ist erwähnenswert, dass signierte und nicht signierte Zahlen unterschiedlich ausgedrückt werden. Insbesondere unterschriebene werden als zwei Komplementzahlen interpretiert. Daher ist der am häufigsten vorkommende negative Wert 1, der als signiertes Bit bezeichnet wird, während positive Zahlen mit 0 beginnen. Wenn wir die negativen Ziffern analytisch rechts übertragen, entfernen wir das Vorzeichen und erhalten die positive Zahl. 2
Daher sollten wir zwischen logischen und arithmetischen Verschiebungen unterscheiden, wobei erstere das wichtigste Stück behalten. Hier haben wir die arithmetische Verschiebung durchgeführt und den negativen Wert der Zahl beibehalten, wie im folgenden Beispielergebnis gezeigt:

#enthalten
#enthalten
void Binär (nicht signierte Num)

nicht signiert l;
für (l = 1> = 5;
binär (Num2); printf (": %d \ n", num2);
exit (exit_success);

Hier müssen wir die erforderlichen Bibliotheken integrieren und . Die Binary () -Funktion wird im nächsten Schritt aufgerufen. Darüber hinaus stellen wir ein Argument „Unsigned Num“ in diese binäre () -Methode ein. Wir haben für die Schleife verwendet und im Inneren für die Schleife müssen wir eine Variable definieren. Wir haben die main () -Funktion außerhalb des Körpers der binären () Funktion verwendet. Wir erstellen einen Konstruktor mit einem Zeichendatentyp und deklarieren eine Variable mit einem Ganzzahl -Datentyp.

Darüber hinaus wird eine Variable namens "Num1" initialisiert und der Wert zugewiesen. Dieser Wert wird dann als Parameter an die binäre () -Methode übergeben. Die Funktion printf () zeigt den binären Wert einer bestimmten Zahl an. Der Operator >> wird verwendet, um die Ziffern nach rechts zu verschieben, indem sie auf den Wert der Variablen „Num1“ angewendet wird. Seit dem Verschieben der Ziffern wurden die Funktionen von Binary () und printf () angewendet, um das Ergebnis zu drucken. Dann wird die Methode exit () verwendet, um das Programm zu beenden.

Abschluss

Wir haben die Besonderheiten der arithmetischen und logischen Verschiebung in der C -Sprache erörtert. Wir haben beobachtet << operator. Here, we also use the left shift to multiply a number.