십육진수(十六進數, hexadecimal number)란 16진법을 사용한 수체계이다. 0~9, A~F로 수를 표현한다.
설명[편집]
전자기기는 비트를 기본 단위로 사용하나 사람이 인지하기 어렵기에 1바이트를 16진수 두자리로 표시하여 사용합니다.
10진수 0~15가 16진수의 한 자리에 해당하며, 10진수의 한 자리를 초과하는 10~15까지는 알파벳 A~F로 표현한다.
예시[편집]
4 바이트의 부호 없는 정수 경우 8자리 16진수이며 사용하며 각각의 자리 수의 값은 아래와 같다.
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|
| 16⁷ | 16⁶ | 16⁵ | 16⁴ | 16³ | 16² | 16¹ | 16⁰ |
| 268435456 | 16777216 | 1048576 | 65536 | 4096 | 256 | 16 | 1 |
그러므로 예를들어 0x00000064라면 (4096*0)+(256*0)+(16*6)+(1*4)와 같으므로 100이다.
또 다른 예를들자면 0x9B78라면 (4096*9)+(256*11)+(16*7)+(1*8)과 같으므로 39800이다.
표현 방법[편집]
| 16진수 | F | E | D | C | B | A | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 10진수 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| 2진수 | 1111 | 1110 | 1101 | 1100 | 1011 | 1010 | 1001 | 1000 | 0111 | 0110 | 0101 | 0100 | 0011 | 0010 | 0001 | 0000 |
숫자 0-9과 A-F를 이용해 나타낸다. C언어 등 고급 언어에서는 16진수 앞에 0x를 붙여 16진수임을 나타낸다. 어셈블리에서는 $를 붙인다.
2진수와의 변환[편집]
16진수 한자리는 2진수 네자리에 해당하기 때문에, 2진수를 16진수로 변환하려면 맨 뒤로부터 4자리씩 끊은 뒤 위 표를 참조하여 각각 16진수로 바꾸면 된다.
%1000111001000 → 0001 0001 1100 1000 → $11c8
반대로 16진수를 2진수로 변환하려면 각 자리를 2진수 4자리로 변환하고 이어붙이면 된다.
$d7a3 → 1101 0111 1010 0011 → %1101011110100011