9
04
2009

1kB는 1024바이트 아니면 1000바이트?

컴퓨터를 막 배우기 시작했을 때는 1kB가 1024B라는 사실을 이해할 수 없었습니다.

디스켓의 구조를 배울 때에는 용량이 1440×1024B인 3.5인치 디스켓이 1.44MB(=1.44×1000×1024B)로 불렸다는 것을 알게되어 더더욱 혼란스러웠습니다.

5.25인치 디스켓의 경우 1.2MB로 불렸는데, 약 1.17×1024×1024바이트로 소수점 아래 두번째에서 반올림하면 1.2가 되기 때문에 갸우뚱 하면서도 큰 의심은 하지 않았습니다. 물론 왜 얘는 소수점 아래로 한자리만 적은 걸까라는 고민은 했지만요.

이러한 혼란 속에서 아마도 ‘시험 점수를 위해’ kB=1024B, MB=10242B이라고 외웠을 것입니다. 그리고 의심하지 않고 수 년간 써왔고, 당연히 그래야 하는 것으로 생각했습니다. 하지만 몇 년 전 복사할 파일을 선택하면서, 접두어가 2의 배수를 나타내는 정보통신 계열의 용량의 표기법에 대해 의문을 가지게 되었습니다.

저는 아래의 이유로  1kB를 1024B로 계산하는 현재의 방법을 버리고, 이를 1KiB로 표기하는 방법으로 강력하게 바뀌어야 하다고 생각합니다.

1. SI(표준 도량형)에 맞지 않고, 정보 교환에 혼란을 줄 수 있습니다.

표준 도량형에서는 k, M, G 등과 같은 SI 접두어를 10의 배수에만 쓰도록 요구합니다. 또한 ISO나 IEC에서 제정한 표준에서도 이 접두어를 모두 10의 배수를 의미하는 것으로 정의하였습니다. 그렇게 때문에 이를 2의 배수일 때도 사용할 경우에는 1000을 의미하는지 아니면 1024를 의미하는지에 대한 혼란이 올 수 있습니다.

These SI prefixes refer strictly to powers of 10. They should not be used to indicate powers of 2 (for example, one kilobit represents 1000 bits and not 1024 bits). The IEC has adopted prefixes for binary powers in the international standard IEC 60027-2: 2005, third edition, Letter symbols to be used in electrical technology – Part 2: Telecommunications and electronics. Although these prefixes are not part of the SI, they should be used in the field of information technology to avoid the incorrect usage of the SI prefixes. (출처: SI brochure)

SI 접두어는 10의 배수를 나타낼 때에만 사용해야 합니다. 2의 배수를 나타낼 때는 사용할 수 없습니다(예를 들면, 1킬로비트는 1024비트가 아닌 1000비트를 나타냅니다). IEC는 국제 표준 IEC 60027-2: 2005, 제3판, 전기기술분야에 사용되는 기호 – 제2부: 통신 및 전자에서 이진 배수에 대한 접두어를 채택하였습니다. 이 접두어는 표준 도량형의 부분은 아니지만 정보 분야에서, 잘못된 SI 접두어의 사용을 피하기 위해, 사용되어야 합니다.

바이트 또는 비트 일 경우에만 k 등을 이진 배수로 보면 되지 않느냐는 의견도 있지만, 동일하게 바이트와 비트를 사용하는 통신 영역는 십진 배수의 의미로 사용될 때가 많기 때문에 혼란은 피할 수 없습니다.

(예를 들면 10MBps로 데이터을 전송하는 것10×106과 파일을 복사하는 것10×220 처럼 같은 기호가 다른 값을 나타낼 수도 있습니다.)

표준 도량형이 있는 것은 값을 정확하게 표현하고, 이를 정확하게 전달하는 데 목적이 있습니다. 비록 관습적으로 사용되었고, (이 쪽 분야를 해온 사람에게는) 무리없이 통용된다고 하더라도, 잘못된 전달의 가능성이 있다는 것 자체가 표기법의 문제이기 때문에 강력하게 바꾸어 나가야 한다고 봅니다.

2. 불필요한 이진 배수에 의한 계산을 요구합니다.

지금 제 하드디스크에는 용량이 361 961 472B인 파일이 한 개 있습니다. 이 파일의 용량은 kB로, MB로, GB로 각각 어떻게 될까요?

1GB의 하드에 100MB 파일을 4개 넣으면 남은 용량은 몇 GB일까요? 거기에 100KB파일이 100개 더 복사한다면 남은 용량은 몇 KB가 될까요?

827kB와 0.808MB 중 어느 쪽이 더 큰 용량을 나타낼까요?

컴퓨터를 쓰다보면 위와 같은 문제를 접하게 될 때가 있습니다. 하지만 저는 이러한 문제를 전혀 머리로는 풀 수 없습니다. 언제나 계산기를 실행하게 1024를 곱하거나 나누어 줌으로써 확인을 합니다. 많은 사람들 역시 그러할 것이라고 생각합니다.

그런데 파일 용량을 이진 배수로 계산하여 표시해 줄 필요가 있는 것일까요? EE에 들어와서 CS를 배우고 있지만, 전 컴퓨터를 처음 접했을 때 부터 지금까지 단 한번도 파일 용량을 1024의 배수로 표현해야 할 필요성을 느끼지 못했습니다. 오히려 갈 수록 의문만 더 생깁니다.

파일 용량은 이진 배수에 의해 할당되지 않습니다. 하드디스크의 할당 단위가 2의 배수이기는 대용량의 저장매체를 사용하고, 한 개의 파일의 수백개 이상의 할당 단위를 사용하는 현대에 와서는 할당 용량이 갖는 숫자 적인 의미는 많이 퇴색되었죠. 파일의 할당 단위를 1개라도 줄이기 위해 1.0000000009GiB파일을 정확히 1GiB로 줄여서 저장하는 일도 없고요.

만약 SI 접두어를 십진으로 계산하게 된다면 위 문제는 아주 간단한 산수 문제가 됩니다(비록 제가 요즘엔 산수 조차도 계산기를 두들기긴 하지만요).

361 961 472B는 361 961kB, 361MB, 0.361GB라고 표현할 수 있고,

1GB의 하드에 100MB 파일을 4개 넣으면 0.6GB가 남고, 여기에 100KB 파일을 다시 100개 넣으면 590 000kB가 남고,

827kB가 0.808MB보다 큰 용량이다라고 자연스럽게 말할 수 있게 됩니다.

하지만 지금은 이러한 방법을 나타낼 수가 없습니다. 하고 싶어도 1000를 나타낼 수 있는 접두어가 없기 때문에, 1024에 의한 복잡한 계산법을 강요받을 수 밖에 없는 것입니다. 1번 문제보다도 전 이 문제가 더욱 심각하다고 생각합니다. 1024라는 숫자에 의해 인간의 사고가 지배받고, 쉬운 방법이 있음에도 불구하고 복잡하고 어려운 방법을 사용하도록 강요받아야 하죠.

사람이 이해하기 쉬운 방식으로 가기 위한 유일한 방법은 SI 접두어에게 원래의 10의 배수에 의한 값을 돌려주는 방법 밖에 없다고 봅니다. 그리고 메모리 모듈의 용량과 같이 이진 배수에 의한 표기가 필요할 때에만 이진 배수에 의한 접두어를 사용해야 한다고 생각합니다.

바뀌어가는 중간 단계에 있어서 매우 혼란스러울 수도 있고, 사회적인 비용도 클 것입니다. 하지마 이 것을 미룬다면 더 큰 비용과 혼란은 뒷 사람에게 남겨두는 것이 되는 것이 아닐까요?

Written by 은현 in: 컴퓨터&기술 | 태그:, , ,

댓글 5개 »

  • 하늘빛

    제가 쓰는 웹 별명이 하늘빛인데 이걸 구글에 쳤다가 들어왔습니다.
    저도 몇 달 전에야 킬로바이트, 키비바이트로 1000배수와 1024배수 접두어를 구분짓는 논의가 진행되었다는 걸 알았습니다. 위키를 보면 ISO에서는 KiB~YiB를 1024^x배수, KB~YB를 1000^x배수로 하는 것으로 표준을 제정했다는 것 같네요.

    저도 어렸을 적 컴퓨터에 야망을 가진 소년이었는데 다른 길로 빠지는 바람에 이제는 컴퓨터 분야는 심취한 취미로만 하고 있습니다.
    90년대의 완성형 조합형 논란에서부터 유니코드에 이르기까지 한글코드에 대해서도 관심이 많았는데, 비슷한 관심을 가진 분을 만나니 반갑군요.
    RSS추가해두고 종종 들르겠습니다. 한글, 코드(문자 인코드)에 관한 정보 앞으로 부탁드립니다.

    댓글 | 2009년 9월 6일
  • 하늘빛

    글을 쓰고 다시 읽어보니 마지막 문장이 반강제적이군요 :)
    앞으로도 유용한 정보를 많이 나눠 주십사 하는 뜻이었습니다.
    댓글 편집은 안 되나봐요?

    댓글 | 2009년 9월 6일
  • 은현

    하늘빛님// 정확히 말하자면 ISO에서 표준을 정한 것은 아닙니다. 산업 표준을 정하는 ISO와 전기, 통신 분야의 표준을 정하는 IEC가 있는데, 두 곳에서 표준을 따로 제정하고 관리하다보니 여러 문제가 있어서, 일부 표준의 경우 공동으로 작업하기로 합의하였습니다. 그래서 ISO/IEC라고 붙어 있는 표준일지라도 ISO의 관리 아래에 있지 않을 수도 있습니다.

    언급하신 표준에서 이진 배수에 대해서 부분의 명칭은 IEC 80000-13:2008 – Quantities and units — Part 13: Information and technology 입니다. 사실 이 부분은 기존의 IEC 표준에서가져온 것이기도 하지요(IEC 60027-2와 3.) 글에서 볼 수 있는 것처럼 ISO/IEC 80000과 같이 ISO와 IEC에서 제정한 표준이 섞인 경우 ISO 80000-?, IEC 80000-?와 같이 기관을 구분합니다.

    사실 ISO냐 IEC냐는 크게 중요하지 않는 것 같습니다. 기술표준원에 문의하였는데, 그 쪽에서는 이 문제에 대해 전혀 인식하지 못하고 있더군요. 이런 사실이 더 많이 퍼지고, 문제 의식을 가지고 접근하는 사람이 많이 늘어야 한다고 생각합니다.

    댓글 | 2009년 9월 21일
  • 일반인 입장에서야 1KB=1024B이든 1KB=1000B이든 느끼는 데 큰 차이가 없을 것 같습니다. 현업에 있는 사람들이라도 1KB=1024B이든 1KB=1000B이든에 관계없이, 아마도 byte 혹은 bit 단위로 관리해서 헷갈리지 않게 일하지 않을까 싶네요.

    이를테면, 메모리를 설계하는 사람들은 당연히 2의 power를 기본 단위로 합니다. 하드디스크 쪽은 잘 모르겠지만, 아마도 회로 구조 상 이진법이 기본이 될 것이라 생각합니다. 데이터를 표현하기 위해 디지털 회로를 중간 단계로 사용한다면 절대로 피할 수 없는 일일 겁니다. 물리적 계층(physical layer)에서는 효율성 때문이라도 이진법은 절대 피할 수 없습니다.

    말씀하신대로 새로운 논리적 계층을 만들어서 십진법으로 가는 것이 통일성 측면에서 바람직하다고 생각합니다. 굳이 모든 사람이 이진법을 바탕으로 서투른 계산을 반복할 필요는 없으니까요. 하지만, 어떤 체계를 택하든 사람들이 그닥 큰 관심을 보일만한 대상은 아닌 것 같습니다. 지금 체계에 딱히 불만을 가지고 있는 사람이 없어 보이니까요.

    댓글 | 2009년 12월 29일
  • “지금 체계에 딱히 불만을 가지고 있는 사람이 없어 보이니까요.”를 “지금 체계에 딱히 큰 불만을 가지고 있는 사람이 많아 보이지는 않으니까요.”라고 고치고 싶은데, 여기는 수정이 안 되는군요. 댓글 쓸 때 조심해야겠습니다. :D

    댓글 | 2009년 12월 29일

RSS feed for comments on this post.
TrackBack: http://lapis.pe.kr/blog/article/370/is_1kb_1024bits_or_1000bits/trackback/

댓글 남기기

Theme: TheBuckmaker.com WordPress Skins | Unlimited Hosting, MP3, AAC & Co