2010-01-07 3 views
2

Java에서 BODMAS를 구현하고 피연산자가 1000 자리까지 포함될 수있는 시나리오에서 작업하고있었습니다. 그래서 다음과 같은 방식으로 구현했습니다. 중절 식 (BODMAS을 구현 한 표현식)을 후치로 변환했습니다. 그런 다음 모든 BigInteger를 구문 분석하여 후행 표현식을 평가했습니다. 이 구현에 성공했습니다.BigInteger Java 해결 방법

지금 나는 등의 BigInteger를 사용하고 INT, 문자열과 같은 기본 데이터 유형으로 할 필요가 없습니다 수 있다는 것을 알 수

나는이 작업을 수행 할 수있는 방법에 대해 생각하고 있고 솔직한로 , 어떤 중요한 진전을 이루지 못했습니다.

기본 데이터 형식을 사용하여 BigInteger를 구현하는 방법에 대한 도움이나 제안은 도움이 될 것입니다.

+2

그것은 도움이 될 것이다 ... p1NG가)의 BigInteger를 사용하여 (또는 재 구현에 대한 어떠한 '법적'제한이 없습니다, 지금은 생각에도 불구하고,이 대답을 삭제하지 마십시오) 적절하지 않다 * 왜 * BigInteger에 대한 제한이 있습니다. BigInteger 소스 코드를 가져 와서 사용할 수 있습니까? 예를 들어, 귀하의 상황에 너무 엄격한 라이선스입니까? –

+1

@ 존 : 자바 SE 대신 자바 ME를 사용하고있는 것 같습니다. – BalusC

+1

나는 "숙제 운동"에 더 가깝게 생각하고 그에 따라 대답했다. –

답변

2

큰 정수를 구현하는 직접적인 방법은 십진수 배열로 저장하는 것입니다.

int[] bignum = new int[] {1, 2, 3, 4}; 
당신은 긴 형식 더하기, 빼기, 곱하기, 나누기, 그리고 어떤 다른 당신이 필요로 구현해야

: 1234에 의해 표현 될 수있다.

당신은 번호를 저장 쉬울 수 있습니다 "반전"것을 발견, 그래서으로 1234 저장할 수 있습니다 더 고급 구현은 기본을 사용

int[] bignum = new int[] {4, 3, 2, 1}; 

를 2^32 또는 기본보다 훨씬 더 큰 무언가 (10)

2

Open JDK의 무료 구현은 BigInteger입니다.

&을 붙여 넣을 수 없더라도 int [] 배열에서 비트를 저장하고 조작하는 방법을 배울 수 있습니다.

CERN의 colt 라이브러리 일 수도 있습니다. 적어도 거대한 비트 필드는 처리 할 수 ​​있습니다.

편집

이 BODMAS의 의미를 찾은 후 (이것은 암호 알고리즘 또는 뭔가 다른라고 생각하고 특별하고 제한된 JDK ;-)에서 수행되어야했다)), 나는 콜트 조언을 추측

난 당신이 설명 할 수있는 경우