コンピュータ・アーキテクチュア第7回
(7)2016.11.21 藤木 文彦 |
負の数の表現 |
2進数での負の数の表現は、「2の補数表現」という方法で表します。
たとえば、8bitで負の数を表現する方法としては、下のような方法が考えられます。
A) 8bitの数に、もう1bit加えて、それで正負を表す。
例)
10進数の +2 0 00000010
10進数の −2 1 00000010
B) 8bitの数の、最上位ビットを、正負を表すビットとする。
こうしたいところですが、
例)
10進数の +2 00000010
10進数の −2 10000010
C) こうします。
例)
10進数の +2 00000010
10進数の −2 11111110 (2の補数表現)
A) の方法が、一見分かりやすそうですが、普通に使われている8bitメモリに、もう1bit継ぎ足したハードウエアを作成しなければなりませんので、実現は面倒です。
B) の上の方法が一番わかりやすそうですが、実は、正負の数を扱う演算(計算)を行うための回路構成が複雑なものとなります。
そこで、 C) の方法を用いて負の数を表します。
このような表現を「2の補数表現」(この場合は、正確には2の8乗の補数というが、多くの場合ビット数が、乗数になることが自明なので省略する。)といいます。この表現の良いところは、
「数値が正か負か最上位ビットを見ただけで(検査すれば)分かる」
「数値が正か負かを考慮せずに同一の加算器で加算できる」
ということがあります。
不便な点としては、人間が見たときにわかりにくいということがありますが、どちらにしても、人間が直接数値計算をする必要はないので、計算機が計算しやすいものであれば構わない、ということになります。
2の補数表現で数値を表す
補数の計算法
i
+2 → −2 を求める例
+2 を2進数で表記 00000010
全ビットを逆転 11111101
1を足す 11111110 → −2
今日の課題 第7回 11.21 |
メールで提出してください。
タイトル arch7 宛先 fujiki.kougei@gmail.com
(1)桁上がりを考えた、1bitの加算結果を書きなさい(2進数2桁で)
0+0+0=
0+0+1=
0+1+0=
0+1+1=
1+0+0=
1+0+1=
1+1+0=
1+1+1=
(3)次の加算を行いなさい。(8ビット)
00110111
00101101
(4)負の数の表現
10進数の 100、−100 を、8bit補数表現の2進数で表せ