2013-07-17 3 views
4

BigDecimal은 비트 조작을 지원합니까? 그렇다면 누군가가 이것에 대한 좋은 가이드를 가르쳐 주시겠습니까?Java에서의 BigDecimal 비트 조작

그렇지 않은 경우 BigDecimal 변수를 2의 제곱으로 나누는 가장 좋은 방법은 무엇입니까?

답변

5

이름에서 알 수 있듯이 BigDecimal십진수 표현에 저장됩니다. 따라서 2의 거듭 제곱으로 나누는 가장 빠른 방법은 2의 거듭 제곱으로 나누는 것입니다. 이 비 정수 값을 생성 할 수 있기 때문에 쉬프트 - 왼쪽 및 쉬프트 - 오른쪽이지만 only in base-10 (심지어 비트 쉬프트와 다르게 동작합니다).

7

나는 여기에 BigInteger을 의미한다고 생각합니다. BigDecimal은 부동 소수점 값에 대해 십진수 표현을 사용하므로 비트 조작에 적합하지 않습니다.

BigInteger은 곱셈/나눗셈에 대해 각각 2 진수에 대해 .shiftLeft().shiftRight()의 왼쪽 및 오른쪽 시프트 연산을 사용하므로이를 사용할 수 있습니다.

는 또한 작업과 같은 .bitCount(), .bitLength(), .{clear,set}Bit(), .and(), .or(), .andNot() 몇 사람이 있습니다. 그렇다고해도 이해가 안되기 때문에 비트 단위가 아닙니다.

+1

감사하지만 BigDecimal을 의미했습니다. 얼마나 바보! – jobin

+0

@fge - 훌륭한 설명! – nanosoft