|  | 
 は,コンピューター内部で1100110011101111と
表すのである.
は,コンピューター内部で1100110011101111と
表すのである.
これは良い方法のように思える.しかし,1000000000000000と 0000000000000000が同じゼロを表すことになる.明らかに不便である.また,詳し くは述べないが,これを使った負の数の演算のためのハードウェアー(CPU)が複雑になり, 現代ではこの方法は使われていない.実際には,次に述べる2の補数を使って,コンピュー ター内部では,負の数を表すのである.
2の補数表現のイメージは,図5の通りである.車の距離計に 似ている.
2の補数を使うメリットは,減算が加算器で可能なことである.それでは,なぜ,補数表
現だと,減算が加算器で可能なのだろうか?.減算の演算は,負の数の加算と同じである.
したがって,図5のように負の数を表現すると,負の整数の加
算は正の整数の加算と同じと分かるであろう.したがって,加算器で減算が可能となる.
実際,正の数の減算を行うときは,ビットの反転と+1加算を実施して,加算器で計算する.
イメージは,図5の通りであるが,もう少し,理論的に説明を
おこなうとしよう.ある正の整数をxとする.その負の数, は補数表現では,
 は補数表現では,
| ![$\displaystyle [-x]=(FFFF-x+1)_{16}$](img24.png) | (2) | 
![$ [-x]$](img25.png) が
が の意味である.
の意味である.![$ [\quad]$](img26.png) の意味は,括弧内の負の整数を計
算機内部の表現を表している.これは,私が作った表記なので,一般には用いられていな
い.右辺の
の意味は,括弧内の負の整数を計
算機内部の表現を表している.これは,私が作った表記なので,一般には用いられていな
い.右辺の がビット反転になっている.ここでは,16ビットで整数を表現しよう
としているので,
がビット反転になっている.ここでは,16ビットで整数を表現しよう
としているので, から
から を引いてビット反転させている.疑問に思う者は実際に
計算して見よ.それに1を加えて,補数の表現としている.つぎに,ある整数
を引いてビット反転させている.疑問に思う者は実際に
計算して見よ.それに1を加えて,補数の表現としている.つぎに,ある整数 を考えて,
y-xを計算してみよう.
を考えて,
y-xを計算してみよう.
 は,あらかじめ計算されて,コンピューター内部のメモリーに格納されている
ので,
は,あらかじめ計算されて,コンピューター内部のメモリーに格納されている
ので,![$ [y-x]$](img32.png) は加算器で可能である.これは,あたりまえである.重要なことは,この結
果が,負の場合,2の補数表現になっており,正の場合,そのままの値になっていること
である.
は加算器で可能である.これは,あたりまえである.重要なことは,この結
果が,負の場合,2の補数表現になっており,正の場合,そのままの値になっていること
である.
演算の結果,y-xが負になる場合を考えよう.すると式(3)は,
| ![$\displaystyle [y-x]=\left\{FFFF-(x-y)+1)\right\}_{16}$](img33.png) | (4) | 
 なので,絶対値のビット反転と+1加算となっ
ていることが理解できる.つぎに,
 なので,絶対値のビット反転と+1加算となっ
ていることが理解できる.つぎに, が正になる場合を考えましょう.すると式(3)は,
が正になる場合を考えましょう.すると式(3)は,
| ![$\displaystyle [y-x]$](img36.png) |  | |
|  | (5) | 
 は計算機内部では,桁上がりを示す.16ビットの表示では無視される.し
たがって,内部の表現は,正しく表せる.
は計算機内部では,桁上がりを示す.16ビットの表示では無視される.し
たがって,内部の表現は,正しく表せる.
| [ | 
|---|
| l]コーヒーブレイク この方法で負の数を表すことは,1970年頃には常識となったようです.驚いたことに,負 の数をこの補数で表すアイディアは,パスカルが最初です.パスカルは,パスカリーヌと いう歯車式計算機を1642年頃に製作しています.そこの減算を加算器で行うために,補数 というものを考えたようです. | 
 を正の整数として,
を正の整数として, をコンピューターの内部で表現する場合,
をコンピューターの内部で表現する場合,
 をビット反転する.
をビット反転する.
 の符号反転を示しており,式(7)
は
の符号反転を示しており,式(7)
は の符号反転を示している.
の符号反転を示している.
式(6)は,-xのコンピューターの内部表現を表している.従って,元の xを求めるためには,その逆の操作