コンテンツにスキップ

コンピュータの数値表現

出典: フリー百科事典『ウィキペディア(Wikipedia)』

稿

[]


CPUOS

CPU8128[ 1][ 2][ 3]

[]


22CPU8000000011111110255CPU8-1280127

ビット[編集]

ビット: bit)の実体は、現代的なコンピュータでは電子的な切り替えスイッチであり、電圧のLow / Highである[注釈 4]。一つの電気的なスイッチの状態を抽象概念化したものがビットであるといえる。

2つの状態「0または1」「Off または On」「no または yes 」などと解釈できる。単一のビットは下表の2種類の状態のどちらかを必ず表す。コンピュータの論理回路である電子回路では、電位の高い (High) 低い (Low) を使うことも多いから、HとLという表現が使われることも多い。この対応は逆でもよく、その場合を負論理という。[注釈 5]

1ビットの状態と数の対応
ビットの状態 対応する数
L 0
H 1

単一のビットでは2種類の値しか表せないが、2ビット、3ビットとビットを増やすことで倍々に組合せの数を増やせる(2ビットで4通り、3ビットで8通り)。

2ビットの状態と数の対応
ビットの状態 二進表示 対応する数
LL 00 0
LH 01 1
HL 10 2
HH 11 3

一般に b 個のビットが取れる状態の個数 NN = 2b である。

ビット数とビット列の状態の個数の対応(8ビットまで)
ビット数 b ビット列の状態の個数 N
1 2
2 4
3 8
4 16
5 32
6 64
7 128
8 256

バイト[編集]

バイト: byte)はコンピュータ上で1つの文字を表す単位で、その長さは文字コード表の大きさに依存するが、典型的には8ビットのビット列を指す。コンピュータ上で計算処理を行う際のデータ単位としてワードがある。1ワードに相当するビット列の長さはコンピュータ・アーキテクチャに依存して、バイトの倍数で表せる長さが選ばれる。1バイトが8ビットのコンピュータであれば、1ワードは従って8の倍数(特に2の冪)個のビットに相当する。


オクテット・ニブル[編集]

オクテット: octet)は8個のビットからなるデータ単位である。多くのコンピュータにおいて1バイトは8ビットであり、従ってバイトとオクテットは同義語となる。 しかしコンピュータネットワークの分野ではアーキテクチャに依存しないデータ単位が必要となるため、オクテットのような単位が主に使われ、(特定のアーキテクチャでは同義語であっても)バイトとは区別される。

ニブル: nibble)は4個のビットからなるデータ単位である。従って、オクテットの半分がニブルであり、1オクテットは2ニブルである。ニブルは16通りの状態を表わせる。0 から 15 の整数との対応例を表に示す。

1ニブルの二進数表示と対応する数
ニブルの二進表現 対応する数 ニブルの二進表現 対応する数
0000 0 1000 8
0001 1 1001 9
0010 2 1010 10
0011 3 1011 11
0100 4 1100 12
0101 5 1101 13
0110 6 1110 14
0111 7 1111 15

?[]


32

使10 01023 1024使 0999 1000 Densely packed decimal FACOM

使nn12#[1]

[ 6] [ 7]

[]


34使 1001001101010001 使

100 9

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ...

8使0 7

0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 20 21 22 23 24 25 26 ...

 "10"  "8"  "20"  "16" 

16使0 9AF

0 1 2 3 4 5 6 7 8 9 A B C D E F 10 11 12 13 14 15 16 17 18 19 1A 1B...

 "10"  "16"  "20"  "32" 

[]


10816

 756

= (7 ×82) + (5 ×81) + (6 ×80)

= (7 ×64) + (5 ×8) + (6 ×1)

= 448 + 40 + 6 =  494

 3b2

= (3 ×162) + (11 ×161) + (2 ×160)

= (3 × 256) + (11 ×16) + (2 ×1)

= 768 + 176 + 2 =  946

13
  000  =  八進 0
  001  =  八進 1
  010  =  八進 2
  011  =  八進 3
  100  =  八進 4
  101  =  八進 5
  110  =  八進 6
  111  =  八進7

14
  0000  =  十六進 0       1000  =  十六進 8
  0001  =  十六進 1       1001  =  十六進 9
  0010  =  十六進 2       1010  =  十六進 a
  0011  =  十六進 3       1011  =  十六進 b
  0100  =  十六進 4       1100  =  十六進 c
  0101  =  十六進 5       1101  =  十六進 d
  0110  =  十六進 6       1110  =  十六進 e
  0111  =  十六進 7       1111  =  十六進f

1001001101010001 
  001 001 001 101 010 001 二進 = 
    1   1   1   5   2   1          111521 八進
  1001 0011 0101 0001 二進 =
     9    3    5    1          9351 十六進


符号付数値表現[編集]

符号付きの数値の表現法はいくつか存在する。必ずしも「符号ビット」があるとは限らない。例えば、ゲタ履き表現では、ゲタの値によっては「符号ビット」としては扱えない。符号ビットがある場合は、最上位ビットが符号ビットのことが多い。なお、符号ビットについて「1なら負の数を表し、0なら正の数を表す」といったように考えるのが自然なのは「符号と絶対値」表現の場合だけであり、たとえば「2の補数」表現であれば、最上位ビットは −(2N) の重みを持つ桁である、と解するのが自然である。

符号と絶対値[編集]

「符号と絶対値」表現は、1ビットの符号ビットと、絶対値を表す残りのビット群からなる。例えば、4ビットの場合で、MSBの、0が正、1が負を示すものとすると、

0101 = +5
1101 = −5

となる。浮動小数点数はたいていがこのような形をしている。ただし、絶対値の部分が指数部と仮数部に分かれている。

1の補数[編集]

1の補数とは、数のビット毎の反転が符号を反転させるとする表現である。これはビット単位のNOT演算に他ならない。例えば、

0101 = +5
1010 = −5

1の補数でも符号-仮数部表現でも、ゼロの表現が二種類存在するという問題がある。このため、どちらも最近のコンピュータでは滅多に使われない。1の補数では、

0000 = +0
1111 = −0

符号-仮数では、

0000 = +0
1000 = −0

2の補数[編集]


2NOT1
0101  =  +5
1011  =  −5


  0000  =  十進 0    1000  =  十進 −8
  0001  =  十進 1    1001  =  十進 −7
  0010  =  十進 2    1010  =  十進 −6
  0011  =  十進 3    1011  =  十進 −5
  0100  =  十進 4    1100  =  十進 −4
  0101  =  十進 5    1101  =  十進 −3
  0110  =  十進 6    1110  =  十進 −2
  0111  =  十進 7    1111  =  十進 −1

16 32768  32767 32 2147483648  2147483647 

2

5 + (5) 
  0101
 +1011
 10000

4410

2n 15  1 (mod 16) 2

[ 8]

小数の表現[編集]

固定小数点数[編集]


COBOL使

321616

84210.50.250.125

:
                          整数ビット群      小数ビット群
   0.5    =   1/2  =  00000000 00000000.10000000 00000000
   1.25   =   5/4  =  00000000 00000001.01000000 00000000
   7.375  =  21/8  =  00000000 00000111.01100000 00000000

1/5 0.2
  13107/65536  =  00000000 00000000.00110011 00110011  =  0.1999969... 十進の場合
  13108/65536  =  00000000 00000000.00110011 00110100  =  0.2000122... 十進の場合

1/3  0.333333...  1/3 


浮動小数点表現[編集]


使



1.1030402E5 = 1.1030402×105

 IEEE 754 binary64

1

1110231023 0  2047  1023 

52 "1" 



 se b f 


e = 0


e = b* 2 + 1 ±  NaN 

binary6415
最大 最小
正の数 1.797693134862231E+308 4.940656458412465E-324
負の数 -4.940656458412465E-324 -1.797693134862231E+308

 NaNNot A Number

binary6415使1.0 + 1.0  2.0 

0.75  0.1  0.000110011... 

1980166TRWTDC1022J[2]

[]


使

LISPPythonrationalbignumcomplex 


[]


[3][ 9]1991[3]519964010705[3]5IRS64161632768[3]

2[4]32()220%[4]

脚注[編集]

注釈[編集]



(一)^ 864198019908163264128

(二)^ CPU8128CPU CPUCPUn188000000011111110255-1280127CPU0255000000011000000102111111112551000000000()2551255255

(三)^ 8mod256#

(四)^ Off / On Off Off 0V  Low 使 Off  Hi-Z #使

(五)^ 使便

(六)^ 22CPUOS

(七)^ DNADNA使 (A)  (T) (G)  (C)4ATGC便

(八)^ 216 32768220

(九)^ Ruby1993Ruby1995

出典[編集]



(一)^ Brian Hayes, "Third Base", American Scientist 89(6): 490-494 (2001), doi:10.1511/2001.6.490

(二)^ ASCII 19837 7719837194 

(三)^ abcd BP2009p.241

(四)^ ab 

関連項目[編集]

外部リンク[編集]

この記事は、パブリックドメインを表明しているvectorsiteの記事をベースとして英語版Wikipediaで執筆されたものを翻訳したものです。