오른쪽에 부호없는 시프트를 적용하려하지만이를 수행 할 방법을 찾을 수 없습니다. 알고있는 사람이 있습니까?BigInteger에서 Java 서명되지 않은 비트 시프트
샘플 코드 :
BigInteger bi;
bi.shiftRight(7) // equals >> 7
어떻게 >>> 7
을 적용?
중복? 제발, 제 대답이 없습니다. BigInteger javadocs로서
오른쪽에 부호없는 시프트를 적용하려하지만이를 수행 할 방법을 찾을 수 없습니다. 알고있는 사람이 있습니까?BigInteger에서 Java 서명되지 않은 비트 시프트
샘플 코드 :
BigInteger bi;
bi.shiftRight(7) // equals >> 7
어떻게 >>> 7
을 적용?
중복? 제발, 제 대답이 없습니다. BigInteger javadocs로서
말한다이 동작은이 클래스에 의해 제공되는 "무한 워드 크기"추상화와 함께 거의 의미로
부호없는 오른쪽 시프트 연산자 (>>>)가 생략된다.
대체 할 수 있습니까? – Romeortec
당신이 사용하고자하는대로 연산자를 사용할 수 있도록하기 위해 unsigned int int 유형을 사용하는 것이 좋습니다. 데이터는 서명되지 않은 것입니다.
unsigned (java가없는 것처럼)와 비슷한 데이터 유형을 만드는 것은 링크입니다 .https : //stackoverflow.com/questions/4449100/unsigned-int-in-java/4449161#4449161 –
부정적 일 경우 항상 부정 할 수 있습니다.
private void test(String[] args) {
test(BigInteger.ONE.shiftLeft(10));
test(BigInteger.valueOf(-50));
}
private void test(BigInteger bigInteger) {
test1(bigInteger);
test1(bigInteger.negate());
}
private void test1(BigInteger bi) {
System.out.println(bi.toString(2)+" >> 5 = "+bi.shiftRight(5).toString(2));
}
NB가 : BigInteger
당신이 그들에 수학을 할 경우 수학이 값을 수정하지 않기 때문에 그래서 당신은 반환 된 결과를 유지해야 불변 것을 기억, 그것은 계산 된 결과를 반환합니다.
https://stackoverflow.com/questions/2727005/bitshifting-with-bigintegers-in-java –
이러한 연산자는 BigInteger에 적합하지 않습니다. 그러한 연산자를 사용하고자하는 것을 추가하기 위해 질문을 확장 할 수 있습니까? 여러 입력 유형에 대한 예상 결과의 몇 가지 예를 제공 할 수 있습니까? – DodgyCodeException
@ DodgyCodeException : 나는 그렇게 생각했지만, 왜 그렇게 생각하지 않습니까? 양수는 정상적으로 이동 될 수 있지만 음수는 양수가되고 부정되어야합니다. IOW, 오른쪽으로 4 씩 이동하면 0x87654321 (음수)은 0x08765432 (양수)가됩니다. 그것은 BigIntegers에 대해서도 에뮬레이션 될 수 있습니다. –