<< 演算子 (Visual Basic)
ビット パターンに対して算術左シフトを実行します。
構文
result = pattern << amount
指定項目
result
必須です。 整数数値。 ビット パターンをシフトした結果。 データ型は pattern
のデータ型と同じです。
pattern
必須です。 整数数値式。 シフトするビット パターン。 データ型は、整数型 (SByte
、Byte
、Short
、UShort
、Integer
、UInteger
、Long
、または ULong
) である必要があります。
amount
必須です。 数値式。 ビット パターンをシフトするビット数。 データ型は Integer
であるか、Integer
に拡大変換する必要があります。
Remarks
算術シフトは循環ではありません。つまり、結果の一方の端からシフトされたビットはもう一方の端には再入されません。 算術左シフトでは、結果のデータ型の範囲を超えてシフトされたビットは破棄され、右側に空いたビット位置は 0 に設定されます。
結果で保持できるよりも多くのビットがシフトされないようにするため、Visual Basic は pattern
のデータ型に対応するサイズ マスクを使用して amount
の値をマスクします。 これらの値のバイナリ AND がシフト量に使用されます。 サイズ マスクを次に示します。
pattern のデータ型 |
サイズ マスク (10 進数) | サイズ マスク (16 進数) |
---|---|---|
SByte 、Byte |
7 | &H00000007 |
Short 、UShort |
15 | &H0000000F |
Integer 、UInteger |
31 | &H0000001F |
Long 、ULong |
63 | &H0000003F |
amount
が 0 の場合、result
の値は pattern
の値と同じになります。 amount
が負の場合は、符号なしの値として扱われ、適切なサイズ マスクでマスクされます。
算術シフトではオーバーフロー例外は生成されません。
注意
<<
演算子を "オーバーロード" できます。つまり、オペランドの型がクラスまたは構造体であるとき、そのクラスまたは構造体で、演算子の動作を再定義できます。 コードで、そのようなクラスまたは構造体に対してこの演算子を使用する場合は、再定義された動作を理解していることを確認してください。 詳細については、「 Operator Procedures」を参照してください。
例
次の例では、<<
演算子を使用して、整数値に対して算術左シフトを実行しています。 結果のデータ型は、シフトする式のデータ型と常に同じになります。
Dim pattern As Short = 192
' The bit pattern is 0000 0000 1100 0000.
Dim result1, result2, result3, result4, result5 As Short
result1 = pattern << 0
result2 = pattern << 4
result3 = pattern << 9
result4 = pattern << 17
result5 = pattern << -1
前の例の結果は次のようになります。
result1
は 192 (0000 0000 1100 0000) です。result2
は 3072 (0000 1100 0000 0000) です。result3
は -32768 (1000 0000 0000 0000) です。result4
は 384 (0000 0001 1000 0000) です。result5
は 0 (左に 15 シフト) です。
result4
のシフト量は 17 AND 15 として計算されます。これは 1 と同等です。
関連項目
.NET