16進数 【hexadecimal number】 16進法 / 十六進数 / 十六進法 / ヘキサデシマル
概要
16進数(hexadecimal number)とは、数を書き表す方法(記数法)の一つで、基数を16(十六)とした表記法のこと。数字の「0」から「9」、およびアルファベットの「A」から「F」を用いてすべての数を表現する。普段我々が日常的な数字の読み書きや算術に用いる位取り記数法は10進数(十進数/10進法)で、一つの桁の表現に「0」から「9」の10種類の数字を使い、各桁の左の桁が10倍、右の桁は10分の1を表している。
一方、16進数では1の位、16の位、256の位…というように桁の重みが16倍ずつ変化する。16進数における「10」は10進数における「16」を意味する。小数点以下も同様で、小数点の右隣から順に、16分の1の位、256分の1の位、4096分の1の位…というように続く。
コンピュータはすべてのデータを2進数で表しており、これを8桁(8ビット)ずつまとめた「バイト」という単位でデータを取り扱う。16進数は一桁で2進数の4桁分(4ビット)の値を書き記すことができるため、1バイトのデータを「00」から「FF」までの2桁の16進数として表記する慣習がある。
表記法
|
|
10進数の表記には「0」から「9」まで10種類の数字が必要なように、16進数では一桁を16種類の数字で表す必要がある。我々が日常的に使う数字は10種類しかないため、10から15までの数を一桁で表現するために「A」から「F」までの6つのアルファベットで代用することが多い。
その場合、「0」から「9」までは10進数の値と同じで、10進数の10を「A」、11を「B」、12を「C」、13を「D」、14を「E」、15を「F」でそれぞれ表す。例えば、「A0」は10進数の「160」(16×10)、「FF」は「255」(16×15+15)を表す。言語や処理系によるが、大文字と小文字は区別しない(どちらでもよい)ことが多い。
なお、複数の位取り表記法が混在する文書などの場合、記された数値がそれぞれ何進法なのかを明示するため「(9ABC)16」「(1234)10」のように右下に小さく10進表記で基数を記す場合がある。
各言語における表記
プログラミング言語やマークアップ言語などの数値リテラルでは、日常的な文書などと同じように単に数字を並べた表記は10進数とみなす場合が多く、16進数を記述する場合は先頭に特定の接頭辞を付けるなど特別な表記法を用いる。
多くの言語ではC言語などにならって「0xDEAD」のように先頭に「0x」を付記する表記法を採用しており、文字列中のコード参照では「¥x0D¥x0A」のように「¥x」(日本語圏以外では¥はバックスラッシュ)を用いる。
言語によっては「#x」(Schemeなど)「&h」(BASICなど)などを用いたり、末尾に「h」を付ける(一部のアセンブリ言語など)場合もある。HTMLやXMLなどにおける数値文字参照では「♪」のように「&#x」と「;」で挟む。