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)

public static BigInteger operator <<(
	BigInteger value,
	int shift
)

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:

BigInteger number = BigInteger.Parse("-9047321678449816249999312055");
Console.WriteLine("Shifting {0} left by:", number);
for (int ctr = 0; ctr <= 16; ctr++)
{
   BigInteger newNumber = number << ctr;
   Console.WriteLine(" {0,2} bits: {1,35} {2,30}", 
                     ctr, newNumber, newNumber.ToString("X"));
}
// 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.

BigInteger number = BigInteger.Parse("-9047321678449816249999312055");
Console.WriteLine("Shifting {0} left by:", number);
for (int ctr = 0; ctr <= 16; ctr++)
{
   BigInteger newNumber = BigInteger.Multiply(number, BigInteger.Pow(2, ctr));
   Console.WriteLine(" {0,2} bits: {1,35} {2,30}", 
                     ctr, newNumber, newNumber.ToString("X"));
}
// 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