|
한마디로 int 형 변수 크기보더 더 큰 수를 읽을 수 있는 방법이라는 거죠?
그러면 큰 수 부분과 작은 수 부분으로 나누면 될 것 같은데요..;;
예를 들면요..
typedef srtuct BiggerByte
{
char HighNum;
char LowNum;
} BiggerThanChar;
이렇게 선언한 다음 char 형 변수의 크기를 고려해서 최대 크기를 정합니다.
const int MaxLowNum = 100;
자 그런 다음..
BiggerThanChar A;
만약 A에 12453 라는 수를 넣는다고 해 봅시다
char 형 변수 최대 값은 255 그런데 우리는 지금 최대값을 100으로 정했죠?
그럼 12453을 다음과 같이 분할해서 A에 넣는 겁니다
A.HighNum = 12453 / 100;
A.LowNum = 12453 % 100;
100..즉 두자리 이상의 값은 HighNum 에 넣는 겁니다.
두자리 이하의 값은 LowNum에 넣구요
그럼 수를 하나 더 만들어 봅시다
BiggerThanChar B;
B.HighNum = 53426 / 100;
B.LowNum = 53426 % 100;
그리고 A와 B를 더해 봅시다
BiggerThanChar C;
C.LowNum = A.LowNum + B.LowNum;
C.HighNum = A.HighNum + B.HighNum;
그런데 여기서 적은 수를 더하는 경우..적은수가 100 MaxLowNum 을..
즉 두자리 이상의 수가 되면 안되겠죠?
그럼 자리값 올림을 계산합시다.
C.HighNum = C.LowNum / 100;
C.LowNum %= 100;
이렇게 해서 두 수의 덧셈이 끝났습니다.
이런 식으로 만든다면 웬만큼 커도 하실 수 있으실 겁니다.
덧붙여 말씀드리자면 이런 건 C++ 인 경우는 class로 만드는 게 편하겠지요?
생성 시 크기를 정할 수 있게 만들고
operater 오버로딩도 하면 훨씬 편하니깐여..
C 언어인 경우라면 따로 헤더와 선언, 함수들을 모으는 게 좋겠죠.
이외에 다른 방법이 있는지는 모르겠습니다만..저라면 이렇게 해결 할 것 같네요..^^ㆀ
곱셈일 경우가 좀 난감합니다마는...
(for문 죽어라 돌리면 되겠다..라는...ㅡ_ㅡㆀ)
여간...도움이 되셨으면 합니다..^^a
그럼 즐프하세요~
|