十六進記数法
出典: フリー百科事典『ウィキペディア(Wikipedia)』
十六進(位取り)記数法(じゅうろくしん-くらいどり-きすうほう)あるいは簡単に十六進法(じゅうろくしんほう)とは、数の表記法の一種で、十六を基数とする位取り記数法である。
名目上の十六進法は、一桁に十六個の数字を収め、十六倍毎に桁を繰り上げるものとなる。この際、"0" から "9" までと "A"(十)から "F"(十五)までの十六個の数字を用い、十六を "10" と表記する方法となる。この位取りによる表記法を十六進表記といい、十六進表記で記された数を十六進数という。十六進数50 は十進数80(= 五倍の十六)を、十六進数B4 は十進数180(= 十一倍の十六 + 四)を、十六進数100 は十進数256(= 十六倍の十六)を意味する。(簡単に、5016=8010 、B416=18010 、10016=25610などで現すこともある。後述)
目次 |
[編集] コンピュータの十六進法
コンピュータでは、桁数で十六進表記を用いる事が多い。殆どの場合、大文字の A - F と小文字の a - f を区別せず使用する。二進数の四桁と十六進数の一桁が一対一で対応し、二進数程には表現が冗長にならないため、二進数の代替としてコンピュータの世界で、しばしば用いられる。
一バイトの値は十六進数二桁で表記できる。十六進数の一桁はニブルとも呼ばれる。二進化十進数では、十六進数の一桁が十進数の一桁に対応する。
[編集] 二進数・十進数との対応
|
---|
[編集] 二進数から十六進数への基数変換
二進数から十六進数へ変換する事が度々あるので、ここでその方法を解説する。
[編集] 整数部分
- まずは二進数を右から順に四桁ずつ区切っていく。もし四桁未満であれば、空いた部分(左側)には全て零が来ると見なす。
- 11010 → 1, 1010 → 0001, 1010
- 続いて、一区切り毎に十進数に変換していく。ポイントは、各桁の重み。左から:8 (二の三乗) → 4 (二の二乗) → 2 (二の一乗) → 1 (二の零乗)
- 左側:1の桁のみON(1) になっているので1、右側:8の桁と2の桁がONなので 8 + 2 = 10
- 出た結果を十六進数に変換する。
- 左側:1、右側:10 = A
- 故に、1A が答えとなる。
慣れてくると四桁の二進数から一桁の十六進数への変換は、毎回計算しなくても覚えてしまうことが多い。
※この方法は何桁であっても通用する。例えば、100110010111010は0100, 1100, 1011, 1010、よって4CBAとなる。
[編集] 小数部分
ここでは、0以上1未満の小数部分の変換方法について説明する。
- まずは二進数を小数点を基準に左から順に四桁ずつ区切っていく。もし四桁未満であれば、空いた部分(右側)には全て零が来ると見なす。
- 0.11 → 0. , 1100
- 続いて、一区切り毎に十進数に変換していく。ポイントは、各桁の重み。左から:8 (二の三乗) → 4 (二の二乗) → 2 (二の一乗) → 1 (二の零乗)
- 8の桁と4の桁がONなので 8 + 4 = 12
- 出た結果を十六進数に変換する。
- 右側:12 = C
- 故に、0.C が答えとなる。
※この方法は小数部分が何桁であっても通用する。
[編集] 表記方法
一般の記数法で基数を明示して書く時は、基数を十進表記で下付きで123416または1234(16)のように表記し、「十六進数のいちにさんよん」と読む。この方法で行くと、例えば、四十八は、4810、4012、3016、2820、と置き換えられる。
小数は、十進数と同様に小数部をピリオドで区切る。例えば0.510は、0.612、0.816、0.A20となる。
プログラミング言語では下記のように表記する。
- 0x1000 (C言語やC言語ライクな文法の言語、例えばC++・Java)
- x1000 (htmlの実体参照における表記。例:က)
- 1000h あるいは 1000H (Pascal・アセンブリ言語・マイコン類の資料にて言語を特定しない際の表記として)
- &h1000 (BASIC、とりわけマイクロソフト系のもの)
- $1000 (上記以外のBASIC ・マイコン類)
読み方は文字並びのまま「ぜろエックスいちぜろぜろぜろ」などと読む。どちらかといえば好ましくないが、慣用で「ヘキサの千(セン)」もしくは「千(セン)ヘキサ」と言った読み方も行われている。
[編集] 単位系
単位系の十六進法では、十進法を援用して十個の数字のみを用い、十六に至ると単位を繰り上げる方法を採る事も多い。
本節では、桁数を十進表記で記し、10 は十を、16 は十六を意味するものとする。