パソコンへの記憶について(符号あり)


いままでは0〜の整数を扱う型を理解してきたのですが、マイナスの整数も扱わなくてはならないときもあります。こんなときにはshort int型 int型  long int型を使用します

マイナスを使う型の約束事

例 8ビットで考えてみる。

1)最上位ビットは符号ありなしの判定に使い、0ならば正、1ならば負とする。

2)数字を扱える部屋は7個(7ビット)となる。

3)10進数から2進数への変換、2進数から10進数への変換には2の補数を考えなければならない。

(なんだか訳のわからないことを書きました。具体的に数字を使って説明したほうが簡単かもしれません。)

符号

1)?に入る最大の数字は1111111となります。正の場合は符号に0がつきますから01111111となります。

[01111111(2進数)→127(10進数)]  ですから最大の数字は127となります。

2)?に入る最小の数字は0000000となります。負の場合は1がつきますから1000000となります。

3)負の数を使う型では最上位ビットが1のものは、そのまま10進数に変換してはなりません。2の補数を使わなければならないのです。

(2の補数の考え方)

10000000を2の補数を使って変換する。

1.数字を反転する。10000000を1と0を反転し、01111111とする。
2.01111111に1を加える(繰り上がり計算する。)01111111+1→10000000
3.2の補数を使って変換した10000000を10進数に変換して、最上位ビットは1であったので−をつける。10000000→ー128

4)以上のことより10000000は10進数ではー128となる。

(例題ー1)

10進数でー100を2進数に変換する。(記憶)

1) −を取って100を2進数に変換する。100→1100100

2) 1100100を部屋に入れる。全部で8ビットなので最上位ビットは空白とになっているので0を入れる。1100100→01100100

3) 2の補数を考える(反転して1を加える操作)。
  1.反転:01100100→10011011
  2.1を加える:10011011+1→10011100

4) 2の補数で求めた2進数を部屋に記憶させるこれがー128の表現となる。


(例題ー2)

2進数の10011100を10進数に変換する。(読み出し)

1) 最上位ビットは1で負であるので、そのまま10進数には変換できないため2の補数を使って変換する。

2) 2の補数で考える。
  1.反転:10011100を反転する 10011100→01100011
  2.1を加える:01100011+1→01100100  

3) 01100100を10進数に変換する。01100100→100

4) 最上位ビットは1であったので−符号をつけてー100とする。

(例題ー3)

10進数のー300を2進数に変換する。

1) −を取って300を2進数に変換する。300→100101100

2) 100101100の9個の数字を部屋に入れる。全部で9ビットなの16ビットの部屋を準備する。最上位ビットは空白とになっているので0を入れる。100101100→00   00000100101100

3) 2の補数を考える(反転して1を加える操作)。
  1.反転:0000000100101100→1111111011010011
  2.1を加える:1111111011010011+1→1111111011010100

4)2の補数で求めた2進数を部屋に記憶させるこれがー300の表現となる。


2進数の1111111011010100を10進数に変換する。

1) 最上位ビットは1で負であるので、そのまま10進数には変換できないため2の補数を使って変換する。

2) 2の補数で考える。
  1.反転:1111111011010100を反転する 1111111011010100→0000000100101011
  2.1を加える:0000000100101011+1→0000000100101100  

3) 0000000100101100 を10進数に変換する。0000000100101100 →300

 [(00000001|00101100)→(1|44)・・・・・・1×256+44→300]
 

4) 最上位ビットは1であったので−符号をつけてー300とする。