BigInteger.LeftShift(BigInteger, Int32) Оператор
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Сдвигает значение BigInteger на указанное число битов влево.
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
Параметры
- value
- BigInteger
Значение, для которого необходимо выполнить побитовый сдвиг.
- shift
- Int32
Количество битов, на которое необходимо сдвинуть влево значение value
.
Возвращаемое значение
Значение, которое было сдвинуто влево на указанное число бит.
Реализации
Комментарии
Метод LeftShift определяет операцию побитового оператора сдвига влево для значений BigInteger . Он включает следующий код:
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
Примечание
В отличие от побитовой операции сдвига влево с целыми примитивами метод LeftShift сохраняет знак исходного BigInteger значения.
Языки, не поддерживающие пользовательские операторы, могут выполнять побитовую операцию сдвига влево путем умножения value
на BigInteger.Pow(2, shift)
. В следующем примере показано, что результаты идентичны результатам использования этого оператора.
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