수와 연산 Numbers and Operations | |||
{{{#!wiki style="margin: 0 -10px -5px; min-height: calc(1.5em + 5px)" {{{#!folding [ 펼치기 · 접기 ] {{{#!wiki style="margin: -5px -1px -11px" | <colbgcolor=#765432> 수 체계 | 자연수 (수학적 귀납법 · 홀수 · 짝수 · 소수 · 합성수) · 정수 · 유리수 (정수가 아닌 유리수) · 실수 (무리수 · 초월수) · 복소수 (허수) · 사원수 | |
표현 | 숫자 (아라비아 숫자 · 로마 숫자 · 그리스 숫자) · 기수법(자연어 수 표기법 · 과학적 표기법 · E 표기법 · 커누스 윗화살표 표기법 · 콘웨이 연쇄 화살표 표기법 ·BEAF · 버드 표기법) · 진법 (십진법 · 이진법 · 8진법 · 12진법 · 16진법 · 60진법) · 분수 (분모 · 분자 · 기약분수 · 번분수 · 연분수 · 통분 · 약분) · 소수 {유한소수 · 무한소수 (순환소수 · 비순환소수)} · 환원 불능 · 미지수 · 변수 · 상수 | ||
연산 | 사칙연산 (덧셈 · 뺄셈 · 곱셈 구구단 · 나눗셈) · 역수 · 절댓값 · 제곱근 (이중근호) · 거듭제곱 · 로그 (상용로그 · 자연로그 · 이진로그) · 검산 · 연산자 · 교환자 | ||
방식 | 암산 · 세로셈법 · 주판 · 산가지 · 네이피어 계산봉 · 계산기 · 계산자 | ||
용어 | 이항연산(표기법) · 항등원과 역원 · 교환법칙 · 결합법칙 · 분배법칙 | ||
기타 | 수에 관련된 사항 (0과 1 사이의 수 · 음수 · 작은 수 · 큰 수) · 혼합 계산 (48÷2(9+3) · 111+1×2=224 · 2+2×2) · 0으로 나누기(바퀴 이론) · 0의 0제곱 | }}}}}}}}} |
진법 Base N | |||||
2진법 | 8진법 | 10진법 | 12진법 | 16진법 | 60진법 |
1. 개요
十六進法 / hexadecimal컴퓨터 분야에서 숫자를 표현하기 위해 사용하는 진법 방식이다. 영어로는 Hexadecimal(헥사데시멀), 줄여서 Hex(헥스)라고도 부른다.
컴퓨터를 포함한 전자기기 분야를 깊게 파고드는 사람이라면 모를 수가 없는 표현방식이다. 다른 진수는 'base N'으로 쓰더라도 2진수, 8진수, 10진수, 16진수 4개는 꼬박꼬박 전용 표현(binary, octal, decimal, hexadecimal)을 써 준다.
2. 목적
20진법도 아니고 10진법도 아닌 어중간한 16진법을 컴퓨터 분야에서 사용하는 이유는 16진수 자릿수 하나가 24을 표현할 수 있기 때문이다. 전자 기기, 특히 컴퓨터에서 사용하는 이유는 자릿수 2개를 사용하면 28을 표현할 수 있는데, 28은 곧 1바이트이다. 간단히 1바이트의 값을 2진법을 사용해서 0101 1111 식으로 표기할 게 아니라 그냥 16진법으로 5F16라고 표기해 버리면 많이 축약할 수 있다. 게다가 훈련이 된 상황이라면 16진법의 숫자만 보고도 바로 2진법 수로 변환이 가능하기 때문에 상당히 유용한 표현 방법이다.- 16진법을 2진법으로 바로 변환하려면 각 자릿수를 2진법으로 변환하면 된다.
예를 들면 25FB16를 0010(2) 0101(5) 1111(F) 1011(B)처럼 끊어서 변환한 다음 전부 붙여주고 앞의 00을 떼준 뒤 100101111110112로 적으면 된다.
- 반대로 2진법을 16진법으로 바로 변환하려면 1의 자리에서부터 4개씩 끊어서 16진법으로 변환해주면 된다.
101110101010101010111101000102를 (000)1 0111 0101 0101 0101 0111 1010 0010로 끊어주고 각각 변환하면 175557A216이 된다.
3. 표기
자릿수 하나가 0부터 15까지 표현할 수 있다. 하지만 우리가 흔히 사용하는 아라비아 숫자는 0부터 9까지 밖에 없기 때문에 나머지 10은 A, 11은 B, 12는 C, 13은 D, 14는 E, 15는 F로 로마자를 사용해 표현한다. 따라서 12는 16진수로 C가 되는거고, 15는 16진수로 F가 되는 형태이고 그 다음 16은 16진수로 10이 된다. 즉 0x11은 10진수로 11이 아니라 16+1로 17이 된다.숫자 뒤에 (16)이란 기호를 붙이거나 아래첨자로 16 또는 hex라고 기재하는 방식을 사용하기도 한다. 그 외에 접두어
0x
를 붙여서 0x10
처럼 표기하는 경우도 있는데, 이건 프로그래밍 언어 쪽에서 16진수 상수(리터럴)를 표현하는 방식이다. 이외에도 $10
, 10h
와 같이 표기하기도 한다.[1] 암호화폐 제로엑스(0x)가 여기서 따와서 지은 이름이다.4. 한국어로 2와 E
16진법 체계에서는 2와 E가 모두 사용되는데 문제는 한국인은 둘을 똑같이 발음[2]한다는 점이다. 이 때문에 2E, E2와 같은 수가 혼동되곤 한다.해결책은 여러 가지가 있다. 2는 "이", "투"(영어), "둘"(포병 숫자), "숫자 이" 중 하나로 읽고, E는 "이", "ᅙᅵ"(성문 파열음, 동남 방언), "에코"(포네틱 코드), "알파벳 이" 중 하나로 읽으면 된다. 어떤 방식을 택하든 말하는 이가 번거롭거나 듣는 이가 번거로운 건 어쩔 수 없다.
5. 여담
- 예전 게임 중에는 능력치의 한계가 255나 65535인 게임이 많았다. 대표적인 예로 스타크래프트1의 업그레이드 최대치나 공격력 최대치가 있다.
하필 정확히 이 수가 한계치가 된 이유는 이 수가 각각 1바이트와 2바이트의 용량을 딱 차지하기 때문이다. 이것보다 1이라도 높이기 위해서는 아예 바이트를 통째로 하나 더 써야 해서 그러지 않고 1을 줄일 수는야 있지만 그럴 유인이 없기 때문에 그러지 않는다.
좀 더 구체적으로 말하면 16진수 수는 4비트를 필요로 하는데, 1바이트가 8비트니까 가용 용량 1바이트에는 수 2개(FF)를 쓸 수 있고 2바이트에는 수 4개(FFFF)를 쓸 수 있다.
- 위에서 언급한 HEX 에디터는 바로 2진법을 사용하여 기록된 데이터들을 보기 편하게 16진법으로 보여주는 형태이다. 16진법으로 표현된 데이터를 보기 위해서는 Hex 기능이 제공되는 별도의 편집 프로그램이 필요하다. 보통 EditPlus나 UltraEdit과 같이 프로그램 코드를 작성할 때 사용되는 프로그램에서 제공하는 경우가 대부분이다. 또한 게임 등에서 숨겨진 조건 요소를 넣을때 조건 발동 확률을 1/5, 1/10, 1/100같은 10진수 수열이 아닌 1/8, 1/16, 1/24, 1/32... 등의 16진수 수열(정확히는 바이트 단위)을 사용하는 것도 이러한 이유에 가깝다.
- 고전게임 고인돌 2의 패스워드는 16진법으로 구성되어, 입력할 수 있는 문자는 1~0 및 a~f에 불과하다.
- Microsoft Windows 기본 제공 계산기에도 16진수↔10진수 변환기능이 있다. XP 이전의 옛 계산기에는 공학용 기능에 통합되어 있지만 비스타 이후 계산기부터는 프로그래머용 계산기로 따로 분화되어 나왔다.
- HTML에서 색상을 표현할 때도 쓴다. HTML 코드나 CSS 코드를 잘 보면
color: #1FB9A6;
[3] 같은 6자리 수의 16진수가 나오는 것을 볼 수 있다. 순서대로 두 자리씩 끊어서 빛의 삼원색인 Red, Green, Blue의 밝기를 각각 256단계로 지정하는 방식이다. HTML 초창기부터 나온 표현법인데, 요즘은 다른 표기법도 많아져서[4] 예전처럼 독보적으로 쓰이지는 않는다.
- 컴퓨터 역사 초창기 EDVAC[5] 시절에는 0~9, ABCDEF 의 디지트를 사용하는 hexadecimal 대신 0~9, KSNJFL 의 디지트를 사용한 sexadecimal 표기를 사용했다. KSNJFL을 사용한 건 5비트 문자셋에서 4비트만 사용하기 때문.
- 야구팬 중에도 알게 모르게 접한 사람이 꽤 있는데, 삼성 라이온즈의 별명 중 하나인 B성의 B는 11의 16진법 표기이다. 삼성이 한이닝 11실점을 할 때 구형 전광판이 이닝별 득점을 한 자릿수로만 표기할 수 있기에[6] 사용한 일종의 궁여지책이다.
- FamiTracker 등 트랙커 프로그램 역시 16진법을 이용한다.
- 16진수로 표시되는 함수(SHA256)를 쓰는 비트코인과도 밀접한 연관성을 갖는다. 블록 헤더를 구성하는 요소들도 0x가 들어간다.
[1] 이외에도
0o
(숫자 0 + 소문자 o) 혹은 0
(그냥 0. 때문에 10진법과 혼동이 매우 심하다.)로 8진수를, 0b
로 2진수를 표현하는 경우가 있다.[2] 일부 사람은 E에 성문 파열음(ʔ)을 넣어 발음하곤 하지만.[3] 나무위키 ← 이런 색이 나온다.[4] 앞서 예를 든 color: #1FB9A6;
은 10진법으로 color: rgb(31, 185, 166);
으로도 표기 가능하다.[5] 최초의 폰노이만식 저장프로그램 컴퓨터, 2진법 사용[6] 2018년 현재는 라팍 정도를 빼면 보기 힘들다. 구형 전광판이 3루측 띠전광판에 있어 메인전광판이 11을 표기하는 와중에 해당 전광판에는 B가 뜬다.