十六進法
[Wikipedia|▼Menu]

十六進法(じゅうろくしんほう、 : hexadecimal)とは、十進数16とし、底およびそのを基準にして数を表す方法である。
記数法

十六進記数法とは、十六を底とする位取り記数法である。

位取り記数法(N進位取り記数法)では、まず基数(base。集合基数(cardinal)とは異なる)となる自然数 N に対して、

0、1、・・・、N-1

の数値に対応する数字の記法を対応させるので、下表のようにする(A?F を英小文字にする場合もある)。

十六進数記法の対応十進法0123456789101112131415
十六進法0123456789ABCDEF

次に、これらを用いて

a m a m − 1 ⋯ a 1 a 0 . b 1 b 2 ⋯ b k {\displaystyle a_{m}a_{m-1}\cdots a_{1}a_{0}.b_{1}b_{2}\cdots b_{k}}

という数字列で表現する。(ただし、 a ∗ {\displaystyle a_{*}} 、 b ∗ {\displaystyle b_{*}} はそれぞれの 0 から F の数字であり、 a m ≠ 0 {\displaystyle a_{m}\neq 0} とする)

この数字列が、

a m × 16 m + a m − 1 × 16 m − 1 + ⋯ + a 1 × 16 + a 0 + b 1 16 + b 2 16 2 + ⋯ + b k 16 k {\displaystyle a_{m}\times 16^{m}+a_{m-1}\times 16^{m-1}+\cdots +a_{1}\times 16+a_{0}+{\frac {b_{1}}{16}}+{\frac {b_{2}}{16^{2}}}+\cdots +{\frac {b_{k}}{16^{k}}}}

という数値であることを表すものである[1]

上記の数字列の先頭にマイナス符号「-」を付けることで負数を表現できる。


ここで {ai} は整数部の位の値を表し、{bi} 小数部の位の値を表す。位の値は 0 から F までの整数である。整数部と小数部の区切りの点は小数点と呼ばれる。あるいはより形式的に、和の記号を用いて次のように表せる: ( ∑ i = 0 m a i ⋅ 16 i ) + ( ∑ j = 1 n b j ⋅ 16 − j ) . {\displaystyle \left(\sum _{i=0}^{m}a_{i}\cdot 16^{i}\right)+\left(\sum _{j=1}^{n}b_{j}\cdot 16^{-j}\right)\,.}
コンピュータでの十六進表記

コンピュータでは、データをビットオクテットを単位として表すことが多い。それぞれ二進表記の1桁、8桁で表現できる。使える数は、前者は0と1だけが許されるが、後者は0?255までに広がる。

後者には、十六進表記がよく用いられ、二進表記の4桁が1桁で表現できるので、二進表記より短く表すことができる。1オクテットは、2桁の十六進表記[2]で表現することができる。

十六進表記の1桁はニブルとも呼ばれる。

下記は具体例。左側はメモリアドレス。右側は十六進法(16進数)で表示された機械語データなど。この例ではアルファベットは小文字が使われている。ディスプレイに表示する時は、可読性を高めるために2文字や4文字ごとに空白をはさむことが一般的である。00000000 57 69 6b 69 70 65 64 69 61 2c 20 74 68 65 20 66 00000010 72 65 65 20 65 6e 63 79 63 6c 6f 70 65 64 69 61 00000020 20 74 68 61 74 20 61 6e 79 6f 6e 65 20 63 61 6e 00000030 20 65 64 69 74 0a
表記方法

十六進表記はよく使われるので、プログラム言語ではリテラルとして特別な表記が準備されていることが多い。一般に、大文字の A?F と小文字の a?f を区別しない。

(1000)16 の表記の例を挙げる。

表記例言語・処理系備考
0x1000

AWK

C

C#

C++

Java

Perl


整数リテラルを記述する場合。
\x1000

AWK

C

C#

C++

Java

Perl


文字リテラルや文字列リテラル中で文字コードを記述する場合。
#x1000

Scheme
整数値の外部表現。
က

SGML

HTML

XML
文字実体参照として文字コードを記述する場合。
1000h あるいは 1000H

アセンブリ言語インテル製)
整数イミディエートを記述する場合。この表記の場合、十六進表記が英字 (A?F) で始まるときは、変数名などと区別するため、先頭に 0 を付けねばならないことがある。例: 0A000H
&h1000

BASICマイクロソフト製)
整数リテラルを記述する場合。
$1000

BASIC(マイクロソフト製以外)

Pascal (一部の処理系)
整数リテラルを記述する場合。主にモトローラ系のアセンブリ言語・マイコン類の資料。

読み方は十進表記の1000((いっ)せん)と区別するため、文字並びのまま読む(例えば、0x1000 は「ぜろ・エックス・いち・ぜろ・ぜろ・ぜろ」と読む)。慣用では「ヘキサの千」もしくは「千ヘキサ」と言った読み方も行われている。

上記の数字に付く h や x は英語で十六進法を意味する hexadecimal から取ったものである。十六進表記であることを明示している。
初期の表記法計算機科学者 Bruce Alan Martinによって提唱された十六進数の国際表記法、新たな数字。(1968年10月。出典:Letters to the editor: On binary notation, Bruce Alan Martin, Associated Universities Inc., Communications of the ACM, Volume 11, Issue 10 (October 1968) Page: 658) [3]

A - F の文字を用いて 9 以上の数字を表現する方法はコンピューター黎明期にはまだ一般的ではなかった。

時期機種101112131415
1950年代Bendix-14など複数012345
1950SWAC[4]uvwxyz
1956Bendix G-15[5][4]uvwxyz
1952ILLIAC I[6][4]KSNJFL
1956Librascope LGP-30[7][4]FGJKQW
1957Honeywell Datamatic D-1000(英語版)[4]bcdefg
1967Elbit 100[4]BCDEFG
1960Monrobot XI(英語版)[4]STUVWX
1960NEC NEAC 1103[8]DGHJKV
1964Pacific Data Systems 1020[4]LCASMD
1980Б3-34(英語版)(ソビエトのプログラム電卓)?LCГE [9]


1968年にBoby Lapointe(英語版)が新たな表記Bibi-binary(英語版)を定義した。この表記は普及しなかった。

ブルックヘブン国立研究所のBruce Alan Martinは A?F による表記に不快感を示し、ビット配列に基づいた全く新しい数字を考案して1968年にCACM(英語版)へ提案したが、賛同者は少なかった[3]


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:36 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef