Skip to content

jwvg0425/Integer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 

Repository files navigation

Integer

C++로 구현한 BigInt

자릿수 제한 없이 표현 가능한 큰 수 클래스입니다. 자릿수 꽉차면 자동으로 확장됩니다.

std::cin, std::cout과 호환됩니다. std::cout<< integer 형식으로 출력 가능하고, std::cin >> integer 형식으로 입력 가능합니다.

예외처리, 테스트를 제대로 하지 않았기 때문에 연산 결과가 이상한 부분이 존재할 수 있습니다. 특히 음수 관련 연산은 많이 테스트하지 못했기 때문에 되도록이면 양수 범위에서만 사용하는 것을 추천.

int, unsigned int, long long int, unsigend long long int까지 기본 정수형 타입과는 모두 호환되며, 여기서 사용 가능한 연산(비교, 산술, 비트 연산) 모두 다 사용가능합니다. 단, 대입의 경우 Integer->기본타입의 대입은 거의 대부분 값의 손실이 발생하기 때문에 암시적인 대입 연산으로는 변환이 불가능하며 함수를 이용해서 명시적으로 변환해야합니다.(asInt, asUnsigned, asInt64, asUnsigned64 함수를 이용하면 됩니다.)

나머지 연산의 경우 C/C++ 스타일에 맞춰서, 일반 int형에서의 동작과 마찬가지로 결과값의 부호는 제수의 부호를 따릅니다.

#성능

##덧셈, 뺄셈

1000 ~ 10000자리수 정도까지 테스트해봤는데 clock가지고는 잘 측정이 안됨 python도 time으로 잘 측정 안되서 생략. 제대로 성능 측정하기도 귀찮고 대충 꽤 빠른 듯

##곱셈

팩토리얼을 이용해서 연산 속도를 측정. 각각 1000번씩 수행

팩토리얼 C++ Integer python
100! 0.017s 0.000016s
200! 0.131s 0.000047s
300! 0.445s 0.000092s

python 왤케 빠름..

##나눗셈

역시 팩토리얼을 이용해서, 해당 값을 다시 1로 만들 때까지 걸리는 연산 속도를 측정. 각각 1000번씩 수행

팩토리얼 C++ Integer python
100! -> 1 0.049s 0.000044s
200! -> 1 0.343s 0.000143s
300! -> 1 1.143s 0.000292s

대충 곱셈보다 3~4배 정도 느림.

About

C++ BigInteger

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages