次の方法で共有


<< 演算子 (Visual Basic)

ビット パターンに対して算術左シフトを実行します。

構文

result = pattern << amount  

部品

result
必須。 整数の数値。 ビット パターンをシフトした結果。 データ型は、 patternのデータ型と同じです。

pattern
必須。 整数数値式。 シフトするビット パターン。 データ型は、整数型 (SByteByteShortUShortIntegerUIntegerLong、または ULong) である必要があります。

amount
必須。 数値式。 ビット パターンをシフトするビット数。 データ型は、 Integer または拡大して Integerする必要があります。

注釈

算術シフトは循環ではなく、結果の一方の端からシフトされたビットがもう一方の端で再導入されないことを意味します。 算術左シフトでは、結果データ型の範囲を超えてシフトされたビットは破棄され、右側の空きビット位置は 0 に設定されます。

結果が保持できるビット数を超えるシフトを防ぐために、Visual Basic では、 amount の値を、 patternのデータ型に対応するサイズ マスクでマスクします。 これらの値のバイナリ AND はシフト量に使用されます。 サイズ マスクは次のとおりです。

のデータ型 pattern サイズ マスク (10 進数) サイズ マスク (16 進数)
SByteByte 7 &H00000007
ShortUShort 15 &H0000000F
IntegerUInteger 31 &H0000001F
LongULong 63 &H0000003F

amountが 0 の場合、resultの値は pattern の値と同じです。 amountが負の値の場合は、符号なし値として取得され、適切なサイズ マスクでマスクされます。

算術シフトではオーバーフロー例外は生成されません。

<<演算子はオーバーロードできます。つまり、オペランドがそのクラスまたは構造体の型を持つ場合、クラスまたは構造体はその動作を再定義できます。 コードでこのようなクラスまたは構造体でこの演算子を使用する場合は、再定義された動作を理解していることを確認してください。 詳細については、「 演算子プロシージャ」を参照してください。

次の例では、 << 演算子を使用して、整数値に対して算術左シフトを実行します。 結果のデータ型は常に、シフトされる式のデータ型と同じです。

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 と 15 として計算され、1 になります。

こちらも参照ください