•  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
현재 진행 중인 사용자 토론이 있습니다.
r5 vs r6
... ...
49 49
이 걱정은 미래의 나에게 넘기기로 하고, 난 이만 생각을 마치기로 하였다.
50 50
51 51
==== ==== ==== ==== ==== ===
52
53
이 문서에 무슨 내용을 작성할 지 정했다.
54
55
현재 취미로 만들고 있는 토이 프로젝트의 프로그램 코드를 해설하는 내용을 전개할 예정이다.
56
57
이 위키는 문서를 어떻게 작성하는 지 연습하고 위키 엔진의 다양한 시스템을 알아보는 목적으로 만들었다.
58
그러한 목적에 부합하도록 최대한 위키에 대한 시스템과 마크다운 문법을 배워갈 것이다.
59
60
현재 만들고 있는 프로젝트의 개요는 아래와 같다.
61
62
프로그래밍 언어에서 아주 큰 정수 타입을 다룰 때 이용하기 위해 Bigint(Big Integer)라 불리우는 객체가 존재한다.
63
이러한 Bigint의 특징은 시스템의 메모리가 허용하는 한 무한에 가까운 정수를 다룰 수 있다는 점이다.
64
나중에 관련하여 임의 정밀도(Arbitrary Precision)에 대한 개념도 이 문서에 정리해볼 예정이다.
65
66
흔히 Python이라는 언어의 정수 타입이 Bigint라 알고 있을 것이다. 또한 그렇게 널리 알려져 있다.
67
하지만 Python의 Bigint는 정말 큰 수를 다룰 수 있을 지 언정, 진정한 의미에서 임의 정밀도를 구현하지는 못했다.
68
엄밀히 따지면 Pyhton은 최대 효율을 끌어내기 위해 임의 정밀도를 일부로 구현하지 않은 느낌이라 못한 것은 아니다.
69
70
아무튼 이러한 Bigint 객체를 통해 임의 정밀도를 구현하고 무한에 가까운 정수를 연산 가능하게 만든 다음,
71
정보 이론에서 정의된 정보 엔트로피의 한계까지 데이터를 무손실 압축할 수 있는 알고리듬인
72
산술 부호화(Arithmetic Code)를 구현하는 프로그램을 제작할 예정이다. 허프먼 부호화(Huffman Code)는 다루지 않는다.
73
74
이를 구현하기 위한 코드를 위키 문서에 부합하도록 작성하는 것이 나의 목표가 되었다.
75
76
==== ==== ==== ==== ==== ===