スポンサーリンク

補数表現をわかりやすく解説する

論理演算工学
スポンサーリンク

どうもふじわらです。

今日は補数表現について解説しようと思います。

補数表現って何?

補数表現っていうのは、ざっくり説明すると先頭ビットが1の時負の数を表すっていうものです。

具体例を出すと、5ビットの2進数があるとすると、10011は負を、00111は正の数を表しています。

スポンサーリンク

求め方

さっきの例の10011は先頭ビットが1だから負の数であることがわかりますね。

けど、10進数だといくつになるかわからないですね。

注:10011で0011をみて-3と答えるはダメです。間違いです。

では、どうやって変換するかやっていきましょう。

まず、1の補数を取ります。

1の補数というのは、ビット列を全て反転させることです。

10011の場合は01100ですね。

そして、1の補数を取った後に最低位ビットに1を足します。(これが2の補数です)

そうすると、01101となりますね。

これは10進数では13です。

10011の2の補数を取って10進数に直したものにマイナスをつけることで、10011の値を求めることができます。今回は-13となりますね。

マイナスの10進数を二進数にする場合も同じ手順でできます。

10進数のマイナスを取る→二進数にする→2の補数を取る→完了

例: -5を二進数にしてみましょう上の手順のようにして、

(5ビット列とします)

-5→5→00101→11011

10進数で-5は2進数で11011となることがわかります。

まあ、本当に変換できてるのか不安なので、11011を10進数に戻してみましょう。

11011→2の補数をとって00101→10進数で5で→先頭ビットが1だったので-5ということがわかりますね。

四則演算

補数表現を使うと

01011-00111とか計算できてしまいます。

上の例だと、-00111が厄介ですね。

ですが、これの2の補数を取ることで、

01011+11001という形で表せます。

あとは、足すだけです。

足すと、00100となります。

(桁上がりは無視してください)

これを10進数に戻すと4です。

01011-00111=11-7=4であってますね。

まとめ

補数表現はめっちゃ簡単。

こういうことが、コンピュータの内部で起こっています。

コメント

タイトルとURLをコピーしました