우리는 컴퓨터와 대화하기 위해서 0과 1의 세계 속에 살아야만 한다. 그렇지만 010101110101001011001010111010100101101010010010100010101110101001011010100100100로 가득한 세상에 있다보면, 내가 센 0이 어디까지인지 1이 몇번째 1인지 알아보기가 너무 어렵다. 컴린이를 가르치는 것도 좋지만 우리의 피로감도 해결해줄 필요가 있다.
8진 표현법은 이를 해결하기 위한 효과적인 방법이다. 0과 1로 표현된 세 개의 비트를 묶어서 8진수의 표기로 변환하여 출력하는 방법이다.
47653 => 100 111 110 101 011
110011010110111001000111010 =>
110 011 010 110 111 001 000 111 010 =>
6 3 2 6 7 1 0 7 2 => 632671072
이는 해당 8진 표현수를 도출하기 위한 목적이 아니라, 순전히 인간이 이진수 처리하기 쉽도록 고안한 방법일 뿐이다.
마찬가지로 16진 표현법 역시 직관적으로 0과 1의 수열을 파악하기 위한 표현법이다. 4개의 비트로 표현할 수 있는 수의 갯수가 16이므로, 네 개의 비트를 묶어 표현하는 방법을 의미한다. 10 이상의 수는 차례로 A(10), B(11), C(12), D(13), E(14), F(15)로 표현한다.
A8B36F => 1010 1000 1011 0011 0110 1111
1100110101101110010001110101 =>
1100 1101 0110 1110 0100 0111 0101 =>
C D 6 E 4 7 5 => 5D6E475
오늘날에는 16진 표현법이 8진 표현법에 비해 더 널리 쓰인다. 그 원인은 컴퓨터 내부에서 8비트 단위(1바이트)가 널리 사용되기 때문이다. 8비트는 4개의 비트 그룹 두개로 나뉘지만, 3개의 비트그룹으로는 나머지 비트가 생긴다는 문제가 있다.
우리가 효율적으로 비트표기를 읽기 위해서는 해당 수열이 어떤 진법으로 변환된 것인지 표기해줄 필요가 있다. 때문에 8진수로 변환된 수열의 앞은 0으로 시작하고, 16진법으로 변환된 수열의 앞은 0x로 시작한다. 8진법의 경우, 10진법과의 혼동 염려가 있으나, 비트에 대한 표기로 한정하면 크게 중요하지 않다. 다만 혼동의 염려가 있는 경우 2진법은 0b, 8진법은 0o, 16진법은 0x로 표기하는 프로그램 언어도 있다.
비트 각각이 하나의 정보를 담는 것은 매우 불편하다. 때문에 일정한 개수의 비트의 묶음을 기본 단위로하여, 저장과 연산을 처리하는 방식을 취한다. 이 비트의 묶음 단위 중에 통상적으로 잘 알려진 것이 바로 바이트이다. 바이트는 일정한 개수의 비트로 이루어진 연속된 비트열. 말하자면 비트 그룹 그 자체다. 사실 일정한 개수가 항상 정해진 건 아니지만, 최근에는 사실상 1바이트를 8비트로 간주하는 경우가 흔하다. 그 이유로는 아스키코드와 같은 상용 표현법이 8비트를 단위로 취하고 있기 때문이다. 작은 단위의 비트묶음으로는 니블(4), 바이트(8), 하프워드(16), 워드(32), 더블워드(64)와 같은 다양한 비트 개수의 묶음들이 존재한다.
그리고 이제는 일상언어가 되어버린 큰 단위의 비트 묶음 이름들이 존재한다. 이는 일반적으로 저장 용량 단위처럼 사용되는데 킬로바이트(210byte), 메가바이트(220byte), 기가바이트(230byte), 테라바이트(240byte) 등이 있다.
여담이지만 해당 용어들은 미터법이라는 측량 용어에서 착안한 용어이기 때문에, 1Km가 의미하는 1000미터와 1Kb가 의미하는 1024bit는 다소간의 차이를 보인다. 이러한 문제로 각각 키비(KiB, 210byte), 메비(Mib, 220byte), 기비(GiB, 230byte), 테비(TiB, 240byte)라는 IEC표준 접두사가 새로 만들어졌다.
정리는 개발자의 숙명