スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

2進数の負数表現(1の補数、2の補数)

コンピュータでは、なぜ2の補数が使われるのか?


2進数で負の整数を表現する場合、大きく発想が3つ考えられます。

 ■符号絶対値表現
 ■1の補数表現
 ■2の補数表現


これらを順に検討して、
ほとんどのコンピュータで2の補数が採用される理由を説明します。
なお、情報処理技術者試験では、2の補数の問題が頻出します。

2進数の8ビットの箱を用意する


まず、8ビットの箱を用意します。
8bit7bit6bit5bit4bit3bit2bit1bit


ここで、
10進数2進数
8bit7bit6bit5bit4bit3bit2bit1bit
(略)
254
255

のように、十進数で0~255までの値を表すことができました。

ではプラスとマイナスの概念を導入した時
どのように表現する方法が考えられるでしょうか?

符号絶対値表現(いちばん初めに思いつく方法)


ここで、先頭に0ならプラス、1ならマイナスとしてはどうでしょう。

例えばこんな感じ
10進数2進数
符号7bit6bit5bit4bit3bit2bit1bit
127
126
(略)
+3
+2
+1
+0
-0
-1
-2
-3
(略)
-126
-127

のように、十進数で(-127)~127までの値を表すことができました。
なんか一見よさそうです。

符号絶対値表現は、加算を考えると使いにくい


しかし、この符号絶対値表現には2つの弱点があります。
 ■符号が異なる値を加算しても、正しい値にならない。
 ■ゼロの概念がふたつある。
具体的に、3+(-4)=-1となるか計算してみます。

10進数2進数
符号7bit6bit5bit4bit3bit2bit1bit
-4
合計
-7?

-7となってしまいました。
これでは、計算に不都合です。


1の補数表現(鏡のようにさかさまにする)


こういうのはどうでしょうか、プラスとマイナスをまるで鏡に映したようにさかさまにします。 (0と1を逆転させる。) 例えばこんな感じ
10進数2進数
符号7bit6bit5bit4bit3bit2bit1bit
127
126
(略)
+8
+7
+6
+5
+4
+3
+2
+1
+0
-0
-1
-2
-3
-4
-5
-6
-7
-8
(略)
-126
-127

1の補数では加算がしにくい


しかし、この1の補数による表現には2つの弱点があります。
 ■加算で、桁あふれが起こると一工夫必要になる。
 ■ゼロの概念がふたつある。
具体的に(-3)+8=5を計算してみます。
10進数2進数
桁あふれ符号7bit6bit5bit4bit3bit2bit1bit
-3
 8
合計
4?
↑箱がないので無視↑本来ある8個の箱

箱の制約上、4となってしまいました。
これでは、計算に不都合です。


2の補数表現(0をひとつにしてに、鏡のようにさかさまにする)


では、0を0000000のみにして、 プラスとマイナスをまるで鏡に映したようにさかさまにしてはどうでしょうか。 ちょっとずれますが、例えばこんな感じ
10進数2進数
符号7bit6bit5bit4bit3bit2bit1bit
127
126
(略)
+8
+7
+6
+5
+4
+3
+2
+1
-1
-2
-3
-4
-5
-6
-7
-8
-9
(略)
-127
-128

なんか、いびつですか仕方ない。
これはコンピュータに気持ち良く計算してもらうためです。

人間がつかうわけではないですから。

2の補数では加算がばっちり


2の補数による表現だと、今までの2つの弱点が解決されます。
 ■加算がしやすい。
 ■ゼロの概念がひとうになる。
具体的に(-3)+8=5を計算してみます。
10進数2進数
桁あふれ符号7bit6bit5bit4bit3bit2bit1bit
-3
 8
合計
↑箱がないので無視↑本来ある8個の箱

箱の制約上、あふれたものが出てきても、放置してもそのまま5となって加算しやすくなります。これは、計算に好都合です。

そこで、2の補数が今のコンピュータのほとんどに使われ、情報処理技術者試験にも頻出するのです。


スポンサーサイト
プロフィール

ダニエル

Author:ダニエル
教えることが好きです。そのうちオリジナリティ出していきます。

保有資格:
基本情報技術者試験
応用情報技術者試験
システム監査技術者試験
その他の資格

カテゴリ
PR
カウンタ
RSSリンクの表示
リンク
検索フォーム
ITパスポート
基本情報技術者
応用情報技術者

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。