Export (0) Print
Expand All

BigInteger.LeftShift Operator

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

Namespace:  System.Numerics
Assembly:  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.5.2, 4.5.1, 4.5, 4

.NET Framework Client Profile

Supported in: 4

Portable Class Library

Supported in: Portable Class Library

.NET for Windows Store apps

Supported in: Windows 8

.NET for Windows Phone apps

Supported in: Windows Phone 8.1

Windows Phone 8.1, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Show:
© 2014 Microsoft