Operator << (C#-Referenz)

Der Linksschiebeoperator (<<) verschiebt seinen ersten Operanden um die durch seinen zweiten Operanden angegebene Bitanzahl nach links. Der Typ des zweiten Operanden muss ein int oder ein Typ sein, der eine vordefinierte implizite numerische Konvertierung in int hat.

Hinweise

Wenn der erste Operand int oder uint (32 Bit) ist, wird die Anzahl der Bitverschiebungen durch die fünf niedrigstwertigen Bits des zweiten Operanden angegeben. Das heißt, die tatsächliche Verschiebung beträgt 0 bis 31 Bits.

Wenn der erste Operand long oder ulong (64 Bit) ist, wird die Anzahl der Bitverschiebungen durch die sechs niedrigstwertigen Bits des zweiten Operanden angegeben. Das heißt, die tatsächliche Verschiebung beträgt 0 bis 63 Bits.

Alle höherwertigen Bits außerhalb des Bereichs des ersten Operanden nach der Verschiebung werden verworfen, und die niederwertigen leeren Bits werden mit Nullen aufgefüllt. Schiebeoperationen lösen nie Überläufe aus.

Benutzerdefinierte Typen können den Operator << überladen (siehe Operator). Als Typ des ersten Operanden muss der benutzerdefinierte Typ verwendet werden, und als Typ des zweiten Operanden muss int verwendet werden. Beim Überladen eines binären Operators wird implizit auch der zugehörige Zuweisungsoperator überladen, falls vorhanden.

Beispiel

class MainClass11
{
    static void Main()
    {
        int i = 1;
        long lg = 1;
        // Shift i one bit to the left. The result is 2.
        Console.WriteLine("0x{0:x}", i << 1);
        // In binary, 33 is 100001. Because the value of the five low-order
        // bits is 1, the result of the shift is again 2. 
        Console.WriteLine("0x{0:x}", i << 33);
        // Because the type of lg is long, the shift is the value of the six
        // low-order bits. In this example, the shift is 33, and the value of
        // lg is shifted 33 bits to the left.
        //     In binary:     10 0000 0000 0000 0000 0000 0000 0000 0000 
        //     In hexadecimal: 2    0    0    0    0    0    0    0    0
        Console.WriteLine("0x{0:x}", lg << 33);
    }
}
/*
Output:
0x2
0x2
0x200000000
*/

Kommentare

Beachten Sie, dass i<<1 und i<<33 das gleiche Ergebnis ausgeben, da die fünf niedrigwertigen Bits von 1 und 33 übereinstimmen.

Siehe auch

C#-Referenz
C#-Programmierhandbuch
C#-Operatoren