BigInteger.RightShift(BigInteger, Int32) 연산자
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
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, System::Numerics::BigInteger>::op_RightShift;
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
를 오른쪽으로 이동할 비트 수입니다.
반환
지정된 비트 수만큼 오른쪽으로 이동한 값입니다.
구현
System.Numerics.IShiftOperators`2.op_RightShift(`0,System.Int32)
설명
이 메서드는 RightShift 값에 대한 비트 오른쪽 시프트 연산자의 연산을 BigInteger 정의합니다. 다음과 같은 코드를 사용할 수 있습니다.
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
Dim number As BigInteger = BigInteger.Parse("-9047321678449816249999312055")
Console.WriteLine("Shifting {0} right 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 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
사용자 지정 연산자를 지원하지 않는 언어는 음수 값에 대해 1번 shift
분할 value
BigInteger.Pow(2, shift)
하고 빼서 비트 오른쪽 시프트 작업을 수행할 수 있습니다. 다음 예제에서는 결과가 이 연산자를 사용한 결과와 동일하다는 것을 보여줍니다.
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
Dim number As BigInteger = BigInteger.Parse("-9047321678449816249999312055")
Console.WriteLine("Shifting {0} right by:", number)
For ctr As Integer = 0 To 16
Dim newNumber As BigInteger = BigInteger.Divide(number, BigInteger.Pow(2, ctr))
If newNumber * ctr < 0 Then newNumber = newNumber - 1
Console.WriteLine(" {0,2} bits: {1,35} {2,30}",
ctr, newNumber, newNumber.ToString("X"))
Next
' 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
양 BigInteger 수 값의 비트 수보다 크거나 같은 경우 shift
오른쪽 시프트 작업의 결과는 다음과 같습니다BigInteger.Zero. 음 BigInteger 수 값의 비트 수보다 큰 경우 shift
오른쪽 시프트 작업의 결과는 다음과 같습니다BigInteger.MinusOne.