BigInteger.LeftShift(BigInteger, Int32) Operátor
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Posune BigInteger hodnotu o zadaný počet bitů doleva.
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
Parametry
- value
- BigInteger
Hodnota, jejíž bity mají být posunuty.
- shift
- Int32
Počet bitů, které se mají posunout value
doleva.
Návraty
Hodnota, která byla posunuta doleva o zadaný počet bitů.
Implementuje
Poznámky
Metoda LeftShift definuje operaci bitového operátoru levého posunu pro BigInteger hodnoty. Umožňuje následující typ kódu:
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
Poznámka
Na rozdíl od bitové operace levého posunu LeftShift s celočíselnými primitivy metoda zachovává znaménko původní BigInteger hodnoty.
Jazyky, které nepodporují vlastní operátory, mohou provádět bitové operace levého posunu vynásobením value
hodnotou BigInteger.Pow(2, shift)
. Následující příklad ukazuje, že výsledky jsou identické s výsledky pomocí tohoto operátoru.
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