왜 1 킬로바이트는 1024 바이트인가?

왜 1 킬로바이트는 1024 바이트인가?

호랑이 담배피던 시절 아주 옛날에 신입 공채 면접에 면접관으로 딸려 들어간 적이 있다.
다대다 면접에 임한 신입들이라 아직 전문 분야에 대한 디테일한 지식을 질문하기는 어려웠다. 그냥 얼마나 스마트 한지에 대한 평가를 내릴 수 있는 질문들을 끊임없이 하면서 검증해야 했었다.
그 중에

“2^60 을 쉽게 풀어 설명해 보라”

라는 질문을 던진 적이 있다.

딱히 무슨 답이 있는 건 아니다. 그냥 0과 1을 다루는 컴퓨터 프로그래머로써 첫발을 내딛는 신입 프로그래머들에게 그 숫자를 프로그래머스럽거나 센스있게 설명할 수 있는 재치들을 보길 원했었다. 그러나, 이 말도 안되는 천문학적인 숫자 앞에서 머리가 새하얘지는 것은 대부분 어쩔 수 없었고, 나 또한 그 자리에 섰으면 동일했으리라 생각한다.

학부 때 수업에서 교수님이 2 진수에 관해 알려주신 적이 있다.

“2의 10승은 1킬로,
2의 20승은 1메가,
2의 30승은 1기가,
2의 40승은 1테라,
2의 50승은 1페타
가 된다.
즉, 10승씩 더해지면서 0(공그라미) 세개가 더 붙어나가는 것이다. “

그 말을 들으면서 컴퓨터가 잘 알아듣는 Base-2 숫자 방식과, 우리가 잘 알아듣는 Base-10의 방식들의 오묘한 연결에 대해서 잠시 공상했던 기억이 있다.

2^60은 우리가 조금 익숙한 숫자가 1 테라 라고 한다면,
“1 테라바이트 하드디스크가 1메가 개, 즉 100만개 있는 정도의 숫자다.” (어마어마한 크기의 IDC ?)

그런데, 컴퓨터학에서 흔히 1 킬로바이트를 1024바이트로 불리워진다.

왜 1킬로바이트는 1024바이트인가?
정확히는 1000바이트가 되어야 할 것 같지 않은가?

1 킬로바이트의 정확한 표기는

1 KB 이다.
1 kB도, 1Kb도 아닌, 1 KB 이다.

컴퓨터의 하드디스크나, 메모리의 용량을 나타낼 때 이렇게 킬로바이트, 메가 바이트, 기가바이트 등의 용어를 쓰게 되는데,
이는 컴퓨터의 아키텍쳐들 ,메모리나 하드디스크 등은 0과 1로 구성된 2진수 숫자를 기반으로 하기 때문이다.
따라서 1000과 가장 가까운 2의 승수는 2^10, 즉 1024가 되고 이걸 킬로바이트로 부르기 시작하면서 자연스레 1킬로바이트를 1024 byte로 정의하게 된다.
메가바이트(1,048,576), 기가바이트(1,073,741,824), 테라바이트(1,099,511,627,776) 역시 마찬가지이다.

반면, 정확한 1000바이트를 나타내는 1 킬로바이트의 표기는 1 kB 이다. 그러나, 한글의 발음으로는 구분할 수 없다.

이런, 표준화 되지 않는 자연스러움 속에 의도치 않은 모호함들이 숨어 있는 것을 볼 수 있고, 이는 때때로 커뮤니케이션 오류로 이어진다.