큰수 생성하는 함수인데요..
글쓴이: shs0917 / 작성시간: 수, 2004/12/01 - 1:44오전
큰 수 모듈러 연산기 만들려고 이리저리 검색해보다가
구한 소스의 일부분인데요.. 소스가 이해가 잘 안가네요..
void makebigint(int n, unsigned char *bigint){ char temp[MAX_DIGIT + 1]; int k; memset(bigint, '0', MAX_DIGIT); //bigint을 '0'의 아스키값으로 채움 sprintf(temp, "%d", n); //temp에 n값을 채움 for(k = strlen(temp) - 1; k >= 0; k--){// k는 MAX_DIGIT 만큼.. bigint[strlen(temp) - k - 1] = temp[k]; //이해불능.... } bigint[MAX_DIGIT] = 0x00; //bigint의 마지막에 0x00 배정 }
큰수 공간을 생성하는 부분인거 같은데...나름대로 주석을 달아보고 있는데 왜 저렇게 하는건지.. 의미를 모르겠습니다.
많은 도움 부탁 드립니다.
Forums:
그냥 숫자 채워넣은 문자열 만들어 주는거 같은데요.숫자의 앞부분은 n
그냥 숫자 채워넣은 문자열 만들어 주는거 같은데요.
숫자의 앞부분은 n 으로 들어오는 숫자 넣어주고
뒷부분은 0으로 채워주고 마지막은 \0 으로..
근데 특이한게 n을 원래의 숫자랑 다르게 거꾸로
즉 123이면 321 로 만들어서 넣어주네요.
(123, bigint) 넘기면
32100000000 같은 문자열이 bigint 로..
무슨 의미인지는 모르겠지만;
http://home.postech.ac.kr/~sodomau
아.. 우선 답변 감사합니다..혼자서 큰 수 자료형을 생각해봤는데요.
아.. 우선 답변 감사합니다..
혼자서 큰 수 자료형을 생각해봤는데요.. 제 생각은 이렇습니다.
배열은 일반적으로
0 1 2 3 4 5 6 7 8 9 <= 첨자순서
만약에 123을 그대로 넣는다면.. 첫번째에 가장 높은 자리가 들어가게 될테고..
결국... 실제 배열 첨자가 높은곳에 높은 자리를 넣으려면 입력값을 뒤집어야
하지 않겠습니까?? 그래서 저는 뒤집어야 한다는 생각을 했었습니다..
이 프로그램도 같은 의미에서 입력값을 뒤집어 넣는게 아닌가 합니다..^^
컴퓨터가 이해할수 있는 코드는 어느 바보나 다 작성할 수 있다. 좋은 프로그래머는 사람이 이해할 수 있는 코드를 짠다 - 마틴파울러
댓글 달기