この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方)
出典検索?: "コンピュータの数値表現"
本稿、コンピュータの数値表現(コンピュータのすうちひょうげん)では、コンピュータにおけるデジタル方式による数値の表現方法について解説する。 コンピュータにおける数値表現、もう少し具体的に言うと、コンピュータのCPU内部のレジスタや演算装置での数値の表現や、プログラミング言語での数値の表現や、OSでの数値の表現について解説する。 そもそもCPU内部のレジスタや演算器においては、数値は、たかだか 8ビット?128ビット程度の[注釈 1]、限られた個数の、固定長のビット列で表わされている。そうした物理的な制約下で表現されたものであるので、コンピュータで扱われる「数値」というのは、数学で扱う(純粋に、概念的な)「数」とはしばしば、性質が異なっているもの、しばしば「別もの」の性質を示す、と考えたほうがよい。[注釈 2][注釈 3] コンピュータにおける数値表現は、以下に説明するビットを最小単位として、ビット列によってなされる。ビットは2通りの状態を持ち、ビット列は2の冪乗通りの状態を持つ。二進整数に対応づけられる。ただし、それをどのように扱うかはCPUの設計方法にもより、たとえば8ビットの0000000?1111111を十進数の「0?255」として扱うCPU設計法があり、それが一般的ではあるが、同じ8ビットを「-128?0?127」として扱う設計法もある。 ビット(英: bit)の実体は、現代的なコンピュータでは電子的な切り替えスイッチであり、電圧のLow / Highである[注釈 4]。一つの電気的なスイッチの状態を抽象概念化したものがビットであるといえる。 2つの状態「0または1」「Off または On」「no または yes 」などと解釈できる。単一のビットは下表の2種類の状態のどちらかを必ず表す。コンピュータの論理回路である電子回路では、電位の高い (High) 低い (Low) を使うことも多いから、HとLという表現が使われることも多い。この対応は逆でもよく、その場合を負論理という。[注釈 5] 1ビットの状態と数の対応ビットの状態対応する数 単一のビットでは2種類の値しか表せないが、2ビット、3ビットとビットを増やすことで倍々に組合せの数を増やせる(2ビットで4通り、3ビットで8通り)。 2ビットの状態と数の対応ビットの状態二進表示対応する数 一般に b 個のビットが取れる状態の個数 N は N = 2b である。 ビット数とビット列の状態の個数の対応(8ビットまで)ビット数 bビット列の状態の個数 N バイト(英: byte)はコンピュータ上で1つの文字を表す単位で、その長さは文字コード表の大きさに依存するが、典型的には8ビットのビット列を指す。コンピュータ上で計算処理を行う際のデータ単位としてワードがある。1ワードに相当するビット列の長さはコンピュータ・アーキテクチャに依存して、バイトの倍数で表せる長さが選ばれる。1バイトが8ビットのコンピュータであれば、1ワードは従って8の倍数(特に2の冪)個のビットに相当する。 オクテット(英: octet)は8個のビットからなるデータ単位である。多くのコンピュータにおいて1バイトは8ビットであり、従ってバイトとオクテットは同義語となる。しかしコンピュータネットワークの分野ではアーキテクチャに依存しないデータ単位が必要となるため、オクテットのような単位が主に使われ、(特定のアーキテクチャでは同義語であっても)バイトとは区別される。 ニブル(英: nibble)は4個のビットからなるデータ単位である。従って、オクテットの半分がニブルであり、1オクテットは2ニブルである。ニブルは16通りの状態を表わせる。0 から 15 の整数との対応例を表に示す。 1ニブルの二進数表示と対応する数ニブルの二進表現対応する数ニブルの二進表現対応する数
概要
データ単位
ビット詳細は「ビット」を参照
L0
H1
LL000
LH011
HL102
HH113
12
24
38
416
532
664
7128
8256
バイト詳細は「バイト (情報)」を参照
オクテット・ニブル詳細は「オクテット (コンピュータ)」および「ニブル」を参照
0000010008
0001110019
00102101010
00113101111
01004110012