Die Linksverschiebung in der C-Sprache stellt den Linksverschiebungsoperator dar, was bedeutet, dass das höchste Bit verworfen und das niedrigste Bit mit 0 gefüllt wird, während die Rechtsverschiebung in der C-Sprache der Rechtsverschiebungsalgorithmus ist, der das Gegenteil der Linksverschiebung ist . Es verschiebt sich ein paar Stellen nach rechts.
Verwendung von Linksverschiebungs- und Rechtsverschiebungsoperatoren in der C-Sprache: Der Linksverschiebungsoperator verwirft das höchste Bit und fügt 0 zum niedrigsten Bit hinzu. Rechtsverschiebung Der Algorithmus ist Das Gegenteil von Linksverschiebung besteht darin, ein paar Bits nach rechts zu verschieben
Die Linksverschiebungs- und Rechtsverschiebungsoperatoren in der C-Sprache sind Operatoren in der C-Sprache und werden im Artikel „Anleitung“ ausführlich vorgestellt Die Verwendung dieser beiden Operatoren hat einen gewissen Referenzwert. Ich hoffe, dass sie für alle hilfreich sind >】
Lassen Sie uns zunächst über die Linksverschiebung sprechen. Bei der Linksverschiebung werden alle Bits einer Zahl um eine bestimmte Anzahl von Stellen nach links verschoben. Zum Beispiel: int i = 1;
i = i << 2; //把i里的值左移2位
int i = 0x40000000; //16进制的40000000,为2进制的01000000...0000
i = i << 1;
int i = 1, j = 0x80000000; //设int为32位 i = i << 33; // 33 % 32 = 1 左移1位,i变成2 j = j << 33; // 33 % 32 = 1 左移1位,j变成0,最高位被丢弃
Beim Kompilieren dieses Programms mit gcc gibt der Compiler eine Warnung aus, die besagt, dass die Anzahl der Linksverschiebungen >= Typlänge ist. Dann werden i und j tatsächlich um 1 Bit verschoben, was dem Rest nach 33 entspricht %32. Dies ist die Regel unter
gcc. Es ist nicht klar, ob andere Compiler gleich sind.
Kurz gesagt, die Linksverschiebung lautet: Verwerfen Sie das höchste Bit und füllen Sie das niedrigste Bit mit 0
Lassen Sie uns über die Rechtsverschiebung sprechen, dann ist die Rechtsverschiebung einfacher zu verstehen.
Rechtsverschiebung Das Konzept ist das Gegenteil der Linksverschiebung um ein paar Bits nach rechts zu verschieben. Durch Verschieben nach rechts bleibt das Vorzeichenbit unverändert, zum Beispiel:
int i = 0x80000000; i = i >> 1; //i的值不会变成0x40000000,而会变成0xc0000000
Das heißt, nachdem das Vorzeichenbit nach rechts verschoben wurde , 0 wird für positive Zahlen und 1 für negative Zahlen hinzugefügt, was der arithmetischen Rechtsverschiebung in der Assemblersprache entspricht. Wenn die Anzahl der verschobenen Bits die Länge des Typs überschreitet, wird entsprechend der Rest genommen und dann der Rest wird verschoben.
负数10100110 >>5(假设字长为8位),则得到的是 11111101
Das obige ist der detaillierte Inhalt vonWie man die Linksverschiebungs- und Rechtsverschiebungsoperatoren in der C-Sprache versteht. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!