コンピュータ・アーキテクチュア第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進数で表せ

inserted by FC2 system