플래시에서 정수를 표현하기 위해 어떤 비트패턴을 사용하는지 알아보고 정수를 사용할 때 나타날수 있는 이슈사항들에 대해 알아보도록 하겠습니다.
1. 컴퓨터의 정수표현 - 2의 보수 표기법
2의 보수 표기법(two’s complement) 은 컴퓨터에서 정수 표현에 사용되는 표기법이며 다른 표기법으로는 초과 표기법이 있습니다.
이 글에서는 플래시에서 정수를 표현하는데 사용되는 2의 보수 표기법에 대해서 알아보도록 하겠습니다.
현재 플래시는 길이가 32인 비트패턴을 사용하여 정수를 표현하고 있습니다. 여기서는 2의 보수 표기법이 무엇인지 설명하기 위해 내용전달이 충분히 가능면서 보다 설명하기 편한 길이가 4인 비트패턴을 사용하겠습니다.
2의 보수 표기법은 양수와 음수의 정보를 나타내는 하나의 최상위 비트와 나머지 값을 나타내는 비트들로 이루어져 있습니다. 길이가 4인 비트패턴으로 예를 들면 아래 표와 같습니다.
| 비트 패턴 | 표현 값 |
| 0111 | 7 |
2의 보수 표기법에서 최상위 비트(제일 왼쪽 비트) 0은 양수를 , 1은 음수를 표현합니다. 이는 부호비트(sign bit) 라고 불립니다. 나머지 3비트는 정수의 크기를 나타내는데, 양수 표현에서는 일반 2진 체계로 정수를 나타내는 방법과 동일합니다. 즉, 정수 3은 2진 체계로 010 의 값으로 나타낼수 있습니다.
여기서 음의 정수를 표현한 비트패턴과 양의 정수를 표현한 피트패턴 사이에는 재미있는 규칙이 있습니다. 양의 정수 비트패턴을 오른쪽에서 왼쪽으로 읽어나갈 때 처음으로 1이 나오는 부분까지는 양과 음의 비트패턴이 같고, 나머지는 양의 정수 비트패턴과 보수관계 입니다. 예를 들어 정수 2와 -2의 비트 패턴을 살펴보면, 비트 패턴의 오른쪽으로 부터 2번째에 처음으로 1이 나오고, 3번째 부터는 양수와 음수의 비트패턴이 보수관계에 있는것을 볼수 있습니다. (보수 관계란 1은 0 , 0은 1 이 되는것을 말함.)
위의 보수 관계를 이용하면 음의 정수 7의 비트패턴을 양의 정수 7의 비트패턴을 이용하여 구할수가 있는데, 다음과 같이 양의 정수 7의 비트패턴을 구하고 (0111), 오른쪽으로부터 처음으로 1이 나오는 자리 다음부터 보수를 취하면 됩니다. (1001)
2. 플래시의 int 를 사용할때 나타날수 있는 이슈사항
정수를 표현하기 위해 이용하는 비트의 자리수에 따라 표현할수 있는 정수의 최대값과 최소값이 정해지는데, 위의 4비트로 예를 들면, 부호 비트 하나를 제외한 나머지 비트열들의 경우의 수 만큼 정수를 표현할수 있습니다( 즉, 양수는 2^3 –1 , 음수는 - 2^3 ). 플래시는 정수를 표현하기 위해 길기가 32인 비트패턴을 사용하므로, 최대값은 2^31 – 1 , 최소값은 -2^31 이 됩니다.
얼마전 팀에서 모 증권 사이트 프로젝트를 진행한적이 있는데, 다른 팀원분이 금액을 나타내기 위해 int 형을 사용해서 이슈가 되었던 적이 있습니다. 즉, 원(WON) 단위 금액을 표현하는데, 최대로 표현할수 있는 수 2,147,483,647 (약 21억) 을 넘어가니까 오버플로(overflow) 가 발생한것이지요.
'프로그래밍 > Actionscript3.0' 카테고리의 다른 글
| Actionscript Project 로 Air 프로그래밍 하기 (0) | 2010/06/26 |
|---|---|
| 플래시의 정수 표현 방법 - 2의 보수 표기법 (3) | 2010/05/26 |
| 심심풀이로 만들어본 플래시 게임 (0) | 2010/04/30 |
| Actionscript3 - Matrix3D 의 버그?? (5) | 2010/04/28 |


