long int형보다 더 큰 정수형 자료형 타입 만들기

jiniri의 이미지

요즘 자료구조라는 과목 배우고 있는데..

엄청난 큰 수를 담을수 있는 자료형을 만들어 보라는데...

이것저것 생각해봤지만 도저히 모르겠네여..

그래서 네이버 지식인에서 찾아봣는데여..
이런 답변이 있군요..

Quote:

1. 질문자께서 얘기한 방법이 그 중 하나입니다.
  예전에 8비트 pc 시절부터 썼던 방법이죠.
  즉, 지금의 많이 사용하는 긴 데이터인 long int가 32비트죠?
  64비트 데이터를 저장하기 위해서 long int를 2개 사용하는 것입니다.
  더하기를 할 때는 하위 32비트를 더한 뒤에,
  상위 32비트를 캐리를 포함해서 더하고...
  이런 방식으로 하는 것이죠.

2. 무식하지만 구현이 수월한 문자열을 이용하는 방법이 있습니다
  char number[100];
  해서 100자리의 숫자를 선언하는 것이죠.
  덧셈을 하면 한 자리씩 더하고, 자리 올림 생기면 위로 올리고...
  자릿수를 거의 무한하게 쓸 수 있다는 장점은 있지만,
  최대 단점은 연산의 속도가 느리고,
  메모리의 낭비가 너무 크다는 것이죠.
  아무리 요즘 PC의 메모리가 크다지만, 그래도 이러한 낭비는 심한 것 같습니다.
  연산의 속도의 경우, 일반적인 덧셈은 CPU 내부에서 2클럭에 시행합니다.
  (Full Adder의 설계가 그렇습니다)
  하지만, 이런 방식으로는 그런 획기적인 코드를 구현하기가 꽤 힘든 것 같습니다.

3. 2.와 비슷하지만 아주 쪼오금 효율적인 BCD 코드가 있습니다.
  BCD 코드란, 지금은 많이 사용되지는 않는 방식입니다.
  Binary-Coded-Digit의 약자인데, 1 니블에 1자리 숫자를 지정하는 것입니다.
  1니블이란 4비트 즉, 반 바이트를 의미하는 것이죠.
  4비트가 표현할 수 있는 범위는 0부터 15인데, 이 중에서 0부터 9까지만
  사용하고 10부터 15까지는 무시하는 것입니다.
  16진수를 그대로 10진수로 읽는다고 생각하면 됩니다.
  메모리의 효율은 적당히 있는 편이고, 구현도 수월한 편이라
  한동안 많이 사용되었습니다.

1번 방법이 괜찮을거 같은데..
이거 찾기가 참 힘들군요..
long 2번이 가능하면 4번, 8번도 써서 더 큰 수 가능한가요?
이거에 관한 문서좀 부탁드립니다..

버려진의 이미지

도움이 될지 모르지만 '파이 구하는 소스' 이런거 구해보시면 어떨까 싶습니다.

kuma의 이미지

부스 알고리즘이 있습니다.

전산기 구조 책자에 나와 있고 방식은 위의 1번 방식입니다.

cdpark의 이미지

1번은 그냥 "long long" 쓰면 됩니다. 2번은 GNU MP 라이브러리 사용하면 되고요.

그리고 "숙제도 셀프"랍니다.

taeyeung의 이미지

다배장 연산이란 키워드로 인터넷에서 검색을 해 보시지요

맨위에 1번 방법입니다. 즉 배열을 이용해서 큰 숫자를 표현하고

연산을 하는 것이지요

기존의 라이브러리 중에 OpenSSL이란 라이브러리의 소스에 보시면

BIG_NUM 이라는 구조체와 이에 대한 사칙연산 함수들이 구현이 되어

있습니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.