
2014년 12월 유튜브에서는 다음과 같은 에러가 발생하였습니다. 2,147,483,647이라는 숫자를 넘어 - 숫자가 나오기 시작했습니다. 컴퓨터가 이 숫자를 감당 못 한 이유는 무엇일까요?
오버플로우
오버플로우(Overflow)는 말 그대로 넘쳐흐른다는 뜻입니다. 우리가 컵에 물을 부을 때 계속 물을 부으면 결국 컵에 물이 넘치는 것과 같이 컴퓨터에서 계산할 때도 메모리가 넘치면 에러가 발생합니다.
컴퓨터는 0과 1로 표현합니다. 2,147,483,647이라는 값도 2^31 -1입니다. 여기서 1을 더하면 어떻게 될까요? 산술적으로는 2^31이라는 값이 나오지만, 컴퓨터의 계산 방식(2의보수)로 인하여 -2^31 = -2,147,483,648이라는 숫자가 나옵니다.
보수(Complement)
| 10진수 | 1의보수 | 2의보수 |
| + 7 | 0111 | 0111 |
| + 6 | 0110 | 0110 |
| + 5 | 0101 | 0101 |
| + 4 | 0100 | 0100 |
| + 3 | 0011 | 0011 |
| + 2 | 0010 | 0010 |
| + 1 | 0001 | 0001 |
| + 0 | 0000 | 0000 |
| - 0 | 1111 | |
| - 1 | 1110 | 1111 |
| - 2 | 1101 | 1110 |
| - 3 | 1100 | 1101 |
| - 4 | 1011 | 1100 |
| - 5 | 1010 | 1011 |
| - 6 | 1001 | 1010 |
| - 7 | 1000 | 1001 |
| - 8 | X | 1000 |
int 자료형은 보통 (+/-)를 가집니다. 컴퓨터가 0과 1로 이루어져 있기에 뺄쌤하기 위해 보수라는 방법을 사용합니다.
수를 뒤집어 더하면 뺄쌤하는 것과 같은 효과가 있어 보수를 취합니다. 1의 보수, 2의 보수 방법은 총 2가지가 있으며 1의 보수 같은 경우에는 +0, -0으로 0이 두번 생겨 일반적으로는 2의 보수를 사용합니다.
각 보수를 구하는 법은 다음과 같습니다.
- 1의 보수 : 0과 1을 뒤집는다 (+7 = 0111 / -7 = 1000)
- 2의 보수 : 0과 1을 뒤집은 뒤 1을 더한다 (+7=0111 / -7 1001)
오버플로우가 나온 까닭은 맨 앞자리의 숫자가 바뀌었기 때문입니다. 가장 앞에 자릿수가 양수, 음수임을 파악합니다. 이에 따라 컴퓨터가 음수로 인식하게 됩니다.
현재의 유튜브는 어떻게 되었는가

현재 유튜브는 64비트로 늘렸습니다. 166억이 넘는 조회수가 나와도 오류가 나오지 않습니다.
이수의 최대 양수 범위만 표기하자면 다음과 같습니다.
| 구분 | 최대 양수(수식) | 최대 양수(숫자) |
| 32비트 | 2^31 - 1 | 2,147,483,647 |
| 64비트 | 2^63 -1 | 9,223,372,036,854,775,807 |
이제 전 세계 인구(80억 가정)가 1153번씩 영상을 봐야 오버플로우를 만들 수 있습니다.
마지막으로 - 컴퓨터로 무한대를 만들 수 없는가
우리는 머릿속으로 무한대를 생각하고 ∞라고 정의하지만 컴퓨터는 CPU와 RAM 이용하여 계산합니다.
각 비트는 전기적 신호지만 공간적인 한계로 무한정 늘릴 수 없습니다. 또한 만약에 이것이 가능할 부지가 마련되어도 이를 사용하기 위해서는 계산하기위해 속도를 희생하게 됩니다. 우리는 일반적으로 많이 쓰는 수를 가지고 이에 따라 적절한 범위(자료형)를 지정하여 사용하게 됩니다.
이미지 출처
https://www.exploringbinary.com/gangnam-style-video-overflows-youtube-counter/
Gangnam Style Video Overflows YouTube Counter - Exploring Binary
On Monday, Psy’s Gangnam Style video exceeded the limit of YouTube’s view counter; this is what Google had to say (hat tip: Digg): “We never thought a video would be watched in numbers greater than a 32-bit integer (=2,147,483,647 views)…” 2,147,
www.exploringbinary.com
'컴퓨터 > IT 인사이트' 카테고리의 다른 글
| 컴퓨터게임 - 슈퍼마리오1가 40KB로 제작할 수 있는 이유 (2) | 2026.02.03 |
|---|---|
| 보안 - SQL 인젝션 원리와 예방방법, DB를 지키는 방법 (1) | 2025.09.04 |
| 디자인패턴 - 디자인패턴(Design Pattern)에 대하여 알아보자 (2) | 2025.05.06 |
| 네트워크 - OSI 7 Layer에 대해 알아보자 (0) | 2025.04.18 |
| 포트포워딩 - 로컬 서버를 외부에 공개해보자 (0) | 2025.04.09 |