Export (0) Print
Expand All

BigInteger.LeftShift Operator

Shifts a BigInteger value a specified number of bits to the left.

Namespace:  System.Numerics
Assemblies:   System.Runtime.Numerics (in System.Runtime.Numerics.dll)
  System.Numerics (in System.Numerics.dll)

'Declaration
Public Shared Operator << ( _
	value As BigInteger, _
	shift As Integer _
) As BigInteger

Parameters

value
Type: System.Numerics.BigInteger

The value whose bits are to be shifted.

shift
Type: System.Int32

The number of bits to shift value to the left.

Return Value

Type: System.Numerics.BigInteger
A value that has been shifted to the left by the specified number of bits.

The LeftShift method defines the operation of the bitwise left-shift operator for BigInteger values. It enables code such as the following:

Dim number As BigInteger = BigInteger.Parse("-9047321678449816249999312055")
Console.WriteLine("Shifting {0} left by:", number)
For ctr As Integer = 0 To 16
   Dim newNumber As BigInteger = number << ctr
   Console.WriteLine(" {0,2} bits: {1,35} {2,30}", ctr, newNumber, newNumber.ToString("X"))
Next 
' The example displays the following output: 
'    Shifting -9047321678449816249999312055 left by: 
'      0 bits:       -9047321678449816249999312055       E2C43B1D0D6F07D2CC1FBB49 
'      1 bits:      -18094643356899632499998624110       C588763A1ADE0FA5983F7692 
'      2 bits:      -36189286713799264999997248220       8B10EC7435BC1F4B307EED24 
'      3 bits:      -72378573427598529999994496440      F1621D8E86B783E9660FDDA48 
'      4 bits: -1.4475714685519705999998899288E+29      E2C43B1D0D6F07D2CC1FBB490 
'      5 bits: -2.8951429371039411999997798576E+29      C588763A1ADE0FA5983F76920 
'      6 bits: -5.7902858742078823999995597152E+29      8B10EC7435BC1F4B307EED240 
'      7 bits:  -1.158057174841576479999911943E+30     F1621D8E86B783E9660FDDA480 
'      8 bits: -2.3161143496831529599998238861E+30     E2C43B1D0D6F07D2CC1FBB4900 
'      9 bits: -4.6322286993663059199996477722E+30     C588763A1ADE0FA5983F769200 
'     10 bits: -9.2644573987326118399992955443E+30     8B10EC7435BC1F4B307EED2400 
'     11 bits: -1.8528914797465223679998591089E+31    F1621D8E86B783E9660FDDA4800 
'     12 bits: -3.7057829594930447359997182177E+31    E2C43B1D0D6F07D2CC1FBB49000 
'     13 bits: -7.4115659189860894719994364355E+31    C588763A1ADE0FA5983F7692000 
'     14 bits: -1.4823131837972178943998872871E+32    8B10EC7435BC1F4B307EED24000 
'     15 bits: -2.9646263675944357887997745742E+32   F1621D8E86B783E9660FDDA48000 
'     16 bits: -5.9292527351888715775995491484E+32   E2C43B1D0D6F07D2CC1FBB490000      
NoteNote

Unlike the bitwise left-shift operation with integer primitives, the LeftShift method preserves the sign of the original BigInteger value.

Languages that do not support custom operators can perform a bitwise left-shift operation by multiplying value by BigInteger.Pow(2, shift). The following example shows that the results are identical to the results of using this operator.

Dim number As BigInteger = BigInteger.Parse("-9047321678449816249999312055")
Console.WriteLine("Shifting {0} left by:", number)
For ctr As Integer = 0 To 16
   Dim newNumber As BigInteger = BigInteger.Multiply(number, BigInteger.Pow(2, ctr))
   Console.WriteLine(" {0,2} bits: {1,35} {2,30}", 
                     ctr, newNumber, newNumber.ToString("X"))
Next 
' The example displays the following output: 
'    Shifting -9047321678449816249999312055 left by: 
'      0 bits:       -9047321678449816249999312055       E2C43B1D0D6F07D2CC1FBB49 
'      1 bits:      -18094643356899632499998624110       C588763A1ADE0FA5983F7692 
'      2 bits:      -36189286713799264999997248220       8B10EC7435BC1F4B307EED24 
'      3 bits:      -72378573427598529999994496440      F1621D8E86B783E9660FDDA48 
'      4 bits: -1.4475714685519705999998899288E+29      E2C43B1D0D6F07D2CC1FBB490 
'      5 bits: -2.8951429371039411999997798576E+29      C588763A1ADE0FA5983F76920 
'      6 bits: -5.7902858742078823999995597152E+29      8B10EC7435BC1F4B307EED240 
'      7 bits:  -1.158057174841576479999911943E+30     F1621D8E86B783E9660FDDA480 
'      8 bits: -2.3161143496831529599998238861E+30     E2C43B1D0D6F07D2CC1FBB4900 
'      9 bits: -4.6322286993663059199996477722E+30     C588763A1ADE0FA5983F769200 
'     10 bits: -9.2644573987326118399992955443E+30     8B10EC7435BC1F4B307EED2400 
'     11 bits: -1.8528914797465223679998591089E+31    F1621D8E86B783E9660FDDA4800 
'     12 bits: -3.7057829594930447359997182177E+31    E2C43B1D0D6F07D2CC1FBB49000 
'     13 bits: -7.4115659189860894719994364355E+31    C588763A1ADE0FA5983F7692000 
'     14 bits: -1.4823131837972178943998872871E+32    8B10EC7435BC1F4B307EED24000 
'     15 bits: -2.9646263675944357887997745742E+32   F1621D8E86B783E9660FDDA48000 
'     16 bits: -5.9292527351888715775995491484E+32   E2C43B1D0D6F07D2CC1FBB490000      

.NET Framework

Supported in: 4.6, 4.5, 4

.NET Framework Client Profile

Supported in: 4

Portable Class Library

Supported in: Portable Class Library

Supported in: Windows Phone 8.1
Show:
© 2015 Microsoft