본문 바로가기
반응형

NeoAxiom3

NxBigInt 클래스 구현 : DivideAndStoreRemain() 함수 진법을 바꾸기 위해서는 가장 중요한 함수가 진수로 숫자를 나누어서 그 결과를 저장해야 합니다. 이 함수는 기본적으로 int32 형의 나눗셈만 적용을 합니다. 그 이상 되는 것은 보안 등에서는 꼭 필요한 부분이지만, 현재는 미구현 상태입니다. DivideAndStoreRemain() 함수는 해당 수로 나누어서 결과를 해당 수에다 저장합니다. 그렇게 하지 않는다면, 많은 경우에 복사연산이 생깁니다. 그래서 부득이 그렇게 작성을 했습니다. 대부분 경우에 나눈 결과를 해당 오브젝트가 저장하는 것이 대부분이니까요. 해당 오브젝트 내용을 저장하고자 한다면, 이 함수를 호출하기 전에 bigint 수를 복사한 후 실행을 해주셔야 합니다. C/C++ 연산자에는 나눗셈과 나머지 연산을 동시에 할 수 있는 것이 없습니다. .. 2015. 1. 19.
NxBigInt 클래스 구현 프로그램은 크게 외부에서 연산자 오버로딩을 이용하여 편하게 이용할 수 있는 함수들과 내부 함수부(실제 연산이 이루어지는 부분들)로 나뉘어져있습니다. 연산자 오버로딩을 처리하는 쪽 함수들은 모두 내부함수를 호출하기 때문에 별로 크게 설명할 내용이 없습니다. #include "NxBigInt.h" #include #include #define ALLOCSIZE 4 const NxBigInt NxBigInt::Zero = 0; const NxBigInt NxBigInt::One = 1; const NxBigInt NxBigInt::Undefined; NxBigInt::NxBigInt(int value) { if( value < 0 ) { m_bNegative = true; value = -value; } el.. 2015. 1. 19.
NxBigInt 클래스 설계 사실 오래전에 짰던 소스이기는 한데, 요즘 프로젝트 오일러 문제를 풀다보니, BigInt를 사용해야할 경우가 많이 있네요. 그래서 최근에 다시 수정을 해보았습니다. 이 라이브러리는 다음과 같은 것을 중점적으로 처리하도록 일단 설계했습니다. 1. 여러가지 부분에서 효율적으로 사용할 수 있는 기능을 구현한다. 예를 들어서 라이브러리를 일반 연산자 오버로딩만을 이용할 경우 오브젝트를 복사해야하는 일들이 많이 발생합니다. 이런 것을 하지 않아도 될 수 있는 기능들을 많이 마련하도록 하였습니다. 2. 보안 등에 사용할 수 있는 기능 추가. 일반적인 수식 계산보다는 비트 연산 등을 처리할 수 있도록 설계하고자 하였습니다. 아직은 미약한 부분들이 많습니다만. 그래서 만들어진 자료구조형은 다음과 같습니다. 할당을 받은.. 2015. 1. 15.
728x90