왜 줄이는가
데이터는 컴퓨팅 시스템이 다룰 수 있는 형태로 적어 둔 값입니다. 적어 둔 것인 이상 어딘가에 공간을 차지합니다. 사진 한 장, 노래 한 곡, 문서 하나가 각각 얼마만큼의 자리를 쓰는지를 우리는 「용량」이라고 부릅니다.
용량을 세는 단위 — 비트와 바이트
비트(bit)는 값을 담는 가장 작은 칸 하나입니다. 칸 하나에는 0 또는 1만 들어갑니다. 칸이 하나뿐이면 두 가지밖에 구별할 수 없으니, 실제로는 여러 칸을 묶어 씁니다. 비트 여덟 개를 묶은 것이 1바이트(byte)이고, 영어 글자 하나가 대체로 1바이트를 차지합니다.
파일 크기에 붙는 KB는 약 1,000바이트, MB는 약 1,000KB입니다(운영 체제에 따라 1,000배가 아니라 1,024배씩 세기도 합니다). 「사진이 1,240KB」라는 말은 그 사진을 적어 두는 데 칸이 그만큼 필요했다는 뜻입니다.
데이터를 줄이면 무엇이 좋아질까요. 크게 셋입니다.
저장할 자리가 덜 든다
같은 자리에 더 많이 담을 수 있습니다. 사물 인터넷 장치처럼 저장 공간이 아주 작은 기기에서는 이 차이로 「담을 수 있느냐 없느냐」가 정해집니다.
보내는 시간이 짧아진다
네트워크로 옮길 양이 줄어드니 그만큼 빨리 도착합니다. 그래서 통신 기술을 고를 때도 「보낼 데이터의 양」이 기준 가운데 하나가 됩니다.
전기를 덜 쓴다
데이터를 저장하고 보내는 데는 전기가 듭니다. 건전지로 몇 달을 버텨야 하는 장치에서는 보낼 양을 줄이면 통신에 드는 전기가 줄어 더 오래 쓸 수 있습니다. 다만 압축하는 계산에도 전기가 들므로, 얼마나 아껴지는지는 장치마다 다릅니다.
데이터 압축(data compression)
필요한 내용을 더 적은 자리에 적어 두도록 표현 방식을 바꾸는 것입니다. 반복되는 부분을 짧게 적거나, 없어도 되는 부분을 덜어 냅니다. 어느 쪽이든 쓰는 데 필요한 내용은 남깁니다. 짧게 적는 쪽은 옷을 압축 팩에 넣어 부피를 줄여도 옷 자체는 그대로인 것과 같습니다.
저장 공간이 넉넉하고 네트워크도 빠른 컴퓨터에서라면 압축이 필요 없을까요? 저장 공간 · 전송 시간 · 전기 가운데 그래도 남는 이유가 있는지 찾아보세요.
줄이고 되돌리기
압축은 혼자 쓰이지 않습니다. 줄여 두었다가 다시 쓸 수 있는 형태로 되돌리는 일이 반드시 뒤따릅니다. 두 일에는 각각 이름이 있습니다.
인코딩(encoding) — 부호화
원본 데이터를 정해진 규칙에 따라 다른 표현으로 바꿔 적는 일입니다. 우리말로 부호화라고 합니다. 압축은 그 쓰임 가운데 하나로, 더 짧은 표현이 나오는 규칙을 골라 인코딩하는 것이고, 그 결과가 압축된 데이터입니다.
디코딩(decoding) — 되돌리기
인코딩한 데이터를 같은 규칙을 거꾸로 적용해 쓸 수 있는 형태로 되돌리는 일입니다. 압축에서는 압축 해제가 이 일입니다.
규칙을 양쪽이 알고 있어야 합니다
압축은 「이렇게 줄여 적겠다」는 약속이 있어야 성립합니다. 줄인 쪽만 규칙을 알고 받는 쪽이 모르면, 받은 것은 그냥 알아볼 수 없는 값 덩어리입니다. 그래서 압축 방식마다 이름이 붙어 있고, 파일 이름 끝의 .zip, .jpg, .mp3 같은 표시가 「어느 규칙으로 줄였는지」를 알려 줍니다. 프로그램은 대개 그 표시를 보고 되돌리는 방법을 고릅니다.
기기끼리 값을 주고받으려면 서로 지키기로 한 약속이 필요한 것과 같은 이야기입니다. 압축도 주고받는 양쪽의 약속입니다.
「데이터를 반으로 줄이려고 뒤쪽 절반을 잘라 버렸다」면 이것을 압축이라고 부를 수 있을까요? 인코딩과 디코딩 가운데 무엇이 없어서 그럴까요?
얼마나 줄었나
「많이 줄었다」는 말만으로는 두 방법을 비교할 수 없습니다. 원본이 큰 파일은 조금만 줄여도 줄어든 양이 커 보이기 때문입니다. 그래서 원본에 비해 얼마만큼이 줄었는지를 백분율로 나타내고, 이 값을 압축률이라고 부릅니다.
압축률 구하기
압축률(%) = ( 1 − 압축한 뒤의 크기 ÷ 원본의 크기 ) × 100
원본이 1,000KB이고 압축한 뒤가 300KB라면, 1 − (300 ÷ 1000) = 0.7이므로 압축률은 70%입니다. 원본이 차지하던 자리의 70%가 줄어 30%만 남았다는 뜻입니다. 값이 클수록 많이 줄어든 것입니다.
| 원본 | 압축한 뒤 | 계산 | 압축률 |
|---|---|---|---|
| 100KB | 60KB | 1 − 60 ÷ 100 = 0.4 | 40% |
| 100KB | 20KB | 1 − 20 ÷ 100 = 0.8 | 80% |
| 2,400KB | 240KB | 1 − 240 ÷ 2400 = 0.9 | 90% |
| 500KB | 500KB | 1 − 500 ÷ 500 = 0 | 0% |
원본과 압축한 뒤가 모두 500KB인 줄을 눈여겨보세요. 압축률이 0%인 경우, 곧 하나도 줄지 않는 경우도 있습니다. 줄일 거리가 없는 데이터를 압축하려 들면 이런 일이 생깁니다. 지금은 그런 경우가 있다는 것까지만 봅니다.
「압축률」은 두 가지 뜻으로 쓰입니다
이 강의노트에서 압축률은 「압축률 구하기」의 식대로 「줄어든 비율」을 뜻합니다. 그런데 같은 말이 「원본이 압축본의 몇 배인가」라는 뜻으로 쓰이기도 합니다. 1,000KB가 200KB가 되었을 때 「줄어든 비율」로는 80%, 「몇 배인가」로는 5배입니다. 같은 상황을 두고 나온 전혀 다른 숫자입니다.
그래서 어디선가 「압축률 5」 같은 값을 만나면, 먼저 어느 뜻으로 쓴 것인지 확인해야 합니다. 백분율이고 클수록 파일이 작아지면 「줄어든 비율」, 배수로 적혀 있으면 「몇 배인가」입니다. 숫자만 보고 크고 작음을 비교하면 틀립니다.
같은 사진을 A는 「압축률 90%」로, B는 「압축률 4배」로 줄였다고 합니다. 어느 쪽이 더 작아졌을까요? 두 값을 같은 뜻으로 맞춰서 비교해 보세요.
무손실과 손실
「왜 줄이는가」 절에서 압축을 「반복되는 부분을 짧게 적거나, 없어도 되는 부분을 덜어 내는 것」이라고 했습니다. 이 문장 안에 이미 두 갈래가 들어 있습니다. 짧게 적기만 한 것과 덜어 낸 것은 결과가 다릅니다. 되돌렸을 때 원본과 똑같은지로 구분됩니다.
무손실 압축
점 아홉 개가 그대로 아홉 개로 돌아옵니다. 되돌린 것이 원본과 완전히 같습니다.
손실 압축
점 네 개가 점선으로만 남았습니다. 되돌려도 원본으로 돌아오지 않습니다. 대신 가운데 상자가 훨씬 작습니다.
무손실 압축(lossless compression)
되돌리면 원본과 한 치도 다르지 않은 압축입니다. 반복되는 부분을 짧게 적어 두었다가 그대로 복원해 놓는 식이라, 버린 것이 없습니다.
대신 줄일 수 있는 정도에 한계가 있어 압축률이 낮은 편입니다.
손실 압축(lossy compression)
일부를 아예 버리는 압축입니다. 버린 것은 되돌릴 수 없으므로, 압축 해제해도 원본과 똑같아지지 않습니다.
대신 버리는 만큼 압축률이 훨씬 높습니다. 수십 배까지 줄어들기도 합니다.
구분하는 물음: 되돌린 것이 원본과 같은가
두 방식은 「얼마나 줄었는가」로 구분되는 것이 아닙니다. 압축률이 낮은 손실 압축도 있고 높은 무손실 압축도 있습니다. 구분하는 기준은 오직 하나, 압축 해제한 결과가 원본과 같은가입니다. 압축률은 그 선택에 따라오는 결과일 뿐입니다.
그러면 어느 쪽을 써야 할까요. 정해진 답은 없고, 다루는 데이터의 성격이 정합니다. 기준은 「조금 달라져도 알아보는 데 지장이 없는가」입니다.
| 데이터 | 조금 달라지면 | 어울리는 방식 |
|---|---|---|
| 거래 내역의 숫자 | 금액이 달라진다. 한 자리만 틀려도 못 쓴다 | 무손실 |
| 프로그램 파일 | 한 비트만 달라져도 실행되지 않을 수 있다 | 무손실 |
| 진료용 영상 | 지워진 부분이 병을 놓치게 만들 수 있다 | 무손실 |
| 감상용 사진 | 눈으로는 차이를 알아채기 어렵다 | 손실도 가능 |
| 감상용 음악 | 귀로는 차이를 알아채기 어렵다 | 손실도 가능 |
같은 사진이라도 쓰임에 따라 답이 달라집니다
표에서 사진과 음악에 「손실도 가능」이라고 적은 것에 주의하세요. 「사진은 손실 압축」이 아닙니다. 같은 사진이라도 친구에게 보내 보는 용도라면 손실 압축으로 충분하지만, 나중에 크게 인쇄하거나 여러 번 고쳐 가며 편집할 사진이라면 무손실 쪽이 낫습니다. 손실 압축으로 다시 저장할 때마다 조금씩 더 나빠지기 때문입니다.
그러니 「어떤 데이터인가」만이 아니라 「그 데이터를 앞으로 어떻게 쓸 것인가」까지 보아야 합니다.
수업 시간에 칠판을 찍어 두었다가 나중에 글씨를 읽어야 하는 사진이라면 어느 쪽이 나을까요? 「눈으로 차이를 알아채기 어렵다」는 기준이 여기서도 그대로 통하는지 검토해 보세요.
핵심 정리
데이터 압축
- 필요한 내용은 남기고 적는 방식을 바꾸어 더 적은 자리에 담는다.
- 저장 공간과 전송 시간을 줄이고, 장치에 따라 전기도 아낀다.
인코딩과 디코딩
- 정해진 규칙으로 바꿔 적는 일이 인코딩(부호화), 되돌리는 일이 디코딩이며 늘 짝을 이룬다. 압축은 인코딩의 한 쓰임이다.
- 같은 규칙을 양쪽이 알아야 한다. 파일 이름 끝의 표시가 그 규칙을 알려 준다.
압축률
- ( 1 − 압축한 뒤 ÷ 원본 ) × 100. 클수록 많이 줄어든 것이다.
- 줄일 거리가 없으면 0%가 되기도 한다.
- 같은 말이 「원본이 몇 배인가」라는 뜻으로도 쓰인다. 어느 쪽인지 먼저 확인한다.
무손실과 손실
- 구분하는 기준은 압축률이 아니라 「되돌린 것이 원본과 같은가」이다.
- 무손실은 완전히 같고 압축률이 낮은 편, 손실은 일부를 버리고 압축률이 높은 편이다.
- 어느 쪽이 옳다고 정해져 있지 않다. 데이터의 성격과 앞으로의 쓰임이 정한다.
확인 퀴즈
배운 내용을 확인해 봅시다.
원본이 800KB인 파일을 압축했더니 200KB가 되었습니다. 압축률은?
무손실 압축과 손실 압축을 구분하는 기준은?
다음 가운데 무손실 압축을 써야 하는 경우로 가장 알맞은 것은?
압축된 파일을 받았는데 어떤 프로그램으로도 열리지 않습니다. 가장 그럴듯한 까닭은?