BigInteger.LeftShift(BigInteger, Int32) Operator
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Shifts a BigInteger value a specified number of bits to the left.
public:
static System::Numerics::BigInteger operator <<(System::Numerics::BigInteger value, int shift);
public:
static System::Numerics::BigInteger operator <<(System::Numerics::BigInteger value, int shift) = System::Numerics::IShiftOperators<System::Numerics::BigInteger, int, System::Numerics::BigInteger>::op_LeftShift;
public static System.Numerics.BigInteger operator << (System.Numerics.BigInteger value, int shift);
static member ( <<< ) : System.Numerics.BigInteger * int -> System.Numerics.BigInteger
Public Shared Operator << (value As BigInteger, shift As Integer) As BigInteger
Parameters
- value
- BigInteger
The value whose bits are to be shifted.
- shift
- Int32
The number of bits to shift value
to the left.
Returns
A value that has been shifted to the left by the specified number of bits.
Implements
Remarks
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
let number = BigInteger.Parse "-9047321678449816249999312055"
printfn $"Shifting {number} left by:"
for ctr = 0 to 16 do
let newNumber = number <<< ctr
printfn $" {ctr, 2} bits: {newNumber, 35} {newNumber: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
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
Note
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
let number = BigInteger.Parse "-9047321678449816249999312055"
printfn $"Shifting {number} left by:"
for ctr = 0 to 16 do
let newNumber = number * BigInteger.Pow(2, ctr)
printfn $" {ctr, 2} bits: {newNumber, 35} {newNumber: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
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