BigInteger.RightShift(BigInteger, Int32) Operador

Definição

Desloca um valor BigInteger um número especificado de bits para a direita.

C#
public static System.Numerics.BigInteger operator >>(System.Numerics.BigInteger value, int shift);

Parâmetros

value
BigInteger

O valor cujos bits devem ser deslocados.

shift
Int32

O número de bits a deslocar value para a direita.

Retornos

Um valor que foi sido deslocado para a direita pelo número especificado de bits.

Implementações

Comentários

O RightShift método define a operação do operador de deslocamento para a direita bit a bit para BigInteger valores. Ele permite que o código seja o seguinte:

C#
var number = BigInteger.Parse("-9047321678449816249999312055");
Console.WriteLine("Shifting {0} right 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 right by:
//      0 bits:       -9047321678449816249999312055       E2C43B1D0D6F07D2CC1FBB49
//      1 bits:       -4523660839224908124999656028       F1621D8E86B783E9660FDDA4
//      2 bits:       -2261830419612454062499828014        8B10EC7435BC1F4B307EED2
//      3 bits:       -1130915209806227031249914007        C588763A1ADE0FA5983F769
//      4 bits:        -565457604903113515624957004        E2C43B1D0D6F07D2CC1FBB4
//      5 bits:        -282728802451556757812478502        F1621D8E86B783E9660FDDA
//      6 bits:        -141364401225778378906239251         8B10EC7435BC1F4B307EED
//      7 bits:         -70682200612889189453119626         C588763A1ADE0FA5983F76
//      8 bits:         -35341100306444594726559813         E2C43B1D0D6F07D2CC1FBB
//      9 bits:         -17670550153222297363279907         F1621D8E86B783E9660FDD
//     10 bits:          -8835275076611148681639954          8B10EC7435BC1F4B307EE
//     11 bits:          -4417637538305574340819977          C588763A1ADE0FA5983F7
//     12 bits:          -2208818769152787170409989          E2C43B1D0D6F07D2CC1FB
//     13 bits:          -1104409384576393585204995          F1621D8E86B783E9660FD
//     14 bits:           -552204692288196792602498           8B10EC7435BC1F4B307E
//     15 bits:           -276102346144098396301249           C588763A1ADE0FA5983F
//     16 bits:           -138051173072049198150625           E2C43B1D0D6F07D2CC1F

Idiomas que não dão suporte a operadores personalizados podem executar uma operação de deslocamento à direita bit a bit dividindo value por BigInteger.Pow(2, shift) e subtraindo 1 vezes shift para valores negativos. O exemplo a seguir mostra que os resultados são idênticos aos resultados do uso desse operador.

C#
var number = BigInteger.Parse("-9047321678449816249999312055");
Console.WriteLine("Shifting {0} right by:", number);
for (int ctr = 0; ctr <= 16; ctr++) {
   BigInteger newNumber = BigInteger.Divide(number, BigInteger.Pow(2, ctr));
   if (newNumber * ctr < 0)
      newNumber--;

   Console.WriteLine(" {0,2} bits: {1,35} {2,30}",
                     ctr, newNumber, newNumber.ToString("X"));
}
// The example displays the following output:
//      0 bits:       -9047321678449816249999312055       E2C43B1D0D6F07D2CC1FBB49
//      1 bits:       -4523660839224908124999656028       F1621D8E86B783E9660FDDA4
//      2 bits:       -2261830419612454062499828014        8B10EC7435BC1F4B307EED2
//      3 bits:       -1130915209806227031249914007        C588763A1ADE0FA5983F769
//      4 bits:        -565457604903113515624957004        E2C43B1D0D6F07D2CC1FBB4
//      5 bits:        -282728802451556757812478502        F1621D8E86B783E9660FDDA
//      6 bits:        -141364401225778378906239251         8B10EC7435BC1F4B307EED
//      7 bits:         -70682200612889189453119626         C588763A1ADE0FA5983F76
//      8 bits:         -35341100306444594726559813         E2C43B1D0D6F07D2CC1FBB
//      9 bits:         -17670550153222297363279907         F1621D8E86B783E9660FDD
//     10 bits:          -8835275076611148681639954          8B10EC7435BC1F4B307EE
//     11 bits:          -4417637538305574340819977          C588763A1ADE0FA5983F7
//     12 bits:          -2208818769152787170409989          E2C43B1D0D6F07D2CC1FB
//     13 bits:          -1104409384576393585204995          F1621D8E86B783E9660FD
//     14 bits:           -552204692288196792602498           8B10EC7435BC1F4B307E
//     15 bits:           -276102346144098396301249           C588763A1ADE0FA5983F
//     16 bits:           -138051173072049198150625           E2C43B1D0D6F07D2CC1F

Se shift for maior ou igual ao número de bits em um valor positivo BigInteger , o resultado da operação de deslocamento à direita será BigInteger.Zero. Se shift for maior que o número de bits em um valor negativo BigInteger , o resultado da operação de deslocamento para a direita será BigInteger.MinusOne.

Aplica-se a

Produto Versões
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Confira também