指数-仮数部表現で負数の仮数部をビット毎に反転させると、1の補数表現に変換される。
2の補数詳細は「2の補数」を参照
8 ビット 2の補数ビットパターン2の補数表現符号無し表現
0000000000
0000000111
.........
01111110126126
01111111127127
10000000?128128
10000001?127129
10000010?126130
.........
11111110?2254
11111111?1255
0が二種類の表現を持つという問題、キャリーを戻して加算しなければならない問題は、2の補数という体系を使うことで回避できる。2の補数では、負の数は(符号なしの感覚で言うと)1の補数より1だけ大きいビットパターンで表される。
例えば、8ビットの整数では値は右表のようになる。2の補数では、ゼロ(00000000)は一種類しかない。ある値の符号を反転した値を得るには、(元の数値が正か負かに関係なく)全ビットを反転させてから 1 を足す。2の補数での加算は符号無しの数値と同じである(ただし、オーバーフローの検出方法は異なる)。右表を見ればわかるとおり、127 と −128 の加算は、符号無しの 127 と 128 を加算するのと同じである。
ある数の2の補数を簡単に得る方法は以下の通りである。例 1例 2 8 ビット エクセス127ビット列エクセス127表現 エクセスN は、事前に定めた正の整数N をバイアス値(偏り)として用いる表現。ある整数は、元の値よりN だけ大きい符号なし整数として表現される。例えば、値 0 は N として表され、値 −N は 0 として表される。N として、2m −1 がよく用いられる。バイアス表現、下駄ばき表現、またはオフセット・バイナリ (offset binary
1. 右端から見ていき、最初の '1' を探す01010010101100
2. その '1' より左側のビット列を反転させる10101111010100
エクセス N
としての解釈符号なし表現
としての解釈
00000000?1270
00000001?1261
.........
011111110127
10000000+1128
.........
11111111+128255
この表現は、浮動小数点数の指数部でよく用いられている。IEEE浮動小数点標準では、単精度(32ビット)の指数部は8ビットのエクセス127として定義されている。倍精度(64ビット)では11ビットのエクセス1023である。 以下の表は 4 ビットでの各表現方法で、最大 +8 から ?8 までの整数を表現したものの比較表である。 4ビット整数表現十進符号無し符号-仮数部1の補数2の補数エクセス7
比較表
+81000N/AN/AN/A1111
+701110111011101111110
+601100110011001101101
+501010101010101011100
+401000100010001001011
+300110011001100111010
+200100010001000101001
+100010001000100011000
(+)000000000000000000111
(?)0N/A10001111N/AN/A
?1N/A1001111011110110
?2N/A1010110111100101
?3N/A1011110011010100
?4N/A1100101111000011
?5N/A1101101010110010
?6N/A1110100110100001
?7N/A1111100010010000
?8N/AN/AN/A1000N/A
出典[脚注の使い方]^ ドナルド・クヌース The Art of Computer Programming, Volume 2: 4.1節
参考文献
Flores, Ivan (1963). The Logic of Computer Arithmetic. Prentice-Hall
Koren, Israel (2002). Computer Arithmetic Algorithms. A.K. Peters. .mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation.cs-ja1 q,.mw-parser-output .citation.cs-ja2 q{quotes:"「""」""『""』"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free a,.mw-parser-output .citation .cs1-lock-free a{background:url("//upload.wikimedia.org/wikipedia/commons/6/65/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited a,.mw-parser-output .id-lock-registration a,.mw-parser-output .citation .cs1-lock-limited a,.mw-parser-output .citation .cs1-lock-registration a{background:url("//upload.wikimedia.org/wikipedia/commons/d/d6/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription a,.mw-parser-output .citation .cs1-lock-subscription a{background:url("//upload.wikimedia.org/wikipedia/commons/a/aa/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("//upload.wikimedia.org/wikipedia/commons/4/4c/Wikisource-logo.svg")right 0.1em center/12px no-repeat}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:#d33}.mw-parser-output .cs1-visible-error{color:#d33}.mw-parser-output .cs1-maint{display:none;color:#3a3;margin-left:0.3em}.mw-parser-output .cs1-format{font-size:95%}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}ISBN 1-56881-160-8
関連項目
整数型
3増し符号
コンピュータの数値表現
負のゼロ
表
話
編
歴
データ型
ビット列
ビット
トリット
ニブル
オクテット
バイト
ワード
ダブルワード(英)
数値
整数型
符号付整数型
十進型(英語版)
有理数型(英語版)
実数型
複素数型
固定小数点型
浮動小数点型
半精度
単精度
倍精度
四倍精度
八倍精度(英語版)
拡張倍精度
ミニフロート