共用方式為


<< 運算子 (C# 參考)

向左移位 (Left-Shift) 運算子 (<<) 會將第一個運算元向左移動,移動的位元數由第二個運算元所指定。 第二個運算元的型別必須是 int 或已預先定義隱含數值轉換成 int 的型別。

備註

如果第一個運算元是 intuint (32 位元的個數),第二個運算元的低序位五個位元就會提供移位計數。 也就是說,實際的移位計數是 0 至 31 個位元。

若第一個運算元是 longunlong (64 位元的個數),則第二個運算元的低序位六個位元會提供移位計數。 也就是說,實際的移位計數是 0 至 63 個位元。

捨棄移位後,會捨棄任何不在第一個運算元類型範圍內的高序位位元,而低序位的空白位元將由零填滿。 移位運算子不會造成溢位。

使用者定義型別可多載 << 運算子 (請參閱 operator),第一個運算元的型別必須為使用者定義型別,而第二個運算元的型別必須為 int。 當多載二元 (Binary) 運算子時,同時隱含多載其對應的指派運算子 (若有的話)。

範例

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
*/

註解

請注意,i<<1 和 i<<33 會得到相同的結果,因為 1 和 33 的低階層五個位元相同。

請參閱

參考

C# 運算子

概念

C# 程式設計手冊

其他資源

C# 參考