様々な学問/勉強課目をシミュレーションで解説!シミュレーター/ツール/ゲームで、いろんな学問を楽しく分かりやすく解説するサイトです!思考の改善や、効率化の話題も!
⇒ 本ブログの詳細/連絡先はコチラ!
学問系TOP AI/ChatGPT 数学 物理 統計学 コンピューター 経済学 Webツール
  1. ホーム
  2. 〇学問シミュレーター/改善・効率化
  3. 情報科学/コンピューター
  4. データ型
  5. 「1の補数表現(負の数の表現)」をシミュレーションで解説![コンピューターの原理基礎]
■注目記事一覧

高校数学 教科書用シミュレーターの制作に携わりました!!

本サイトの「サイコロ シミュレーター」が熊本の特別教育テレビ授業で使われました!

マルチタスクのCPUの動きをシミュレーターで見てみよう!

浮動小数点型の仕組みをシミュレーターで理解しよう!

ページングをシミュレーターで体感しよう!

コンピューターの全理基礎:半加算器の原理をシミュレーターで理解しよう!

ストレージのRAID5構成をシミュレーターで理解しよう!
 
全テーマ共通記事一覧

「1の補数表現(負の数の表現)」をシミュレーションで解説![コンピューターの原理基礎]

$$\newcommand\CB[1]{\textcolor{blue}{#1}} \newcommand\CR[1]{\textcolor{red}{#1}} \newcommand\CG[1]{\textcolor{magenta}{#1}}$$

コンピューターは2進数の世界で動いています。2進数は1001101101みたいな感じで0と1の羅列になります。

前回は絶対値表現での負の数の表し方を説明しましたが、今回は「1の補数表現」での負の数の表現について解説します!

「1の補数表現(負の数の表現)」をシミュレーションで解説![コンピューターの原理基礎]

おさらい:「絶対値表現 負の数 = 先頭bidを1」にする!

コンピューターでは簡単に、「先頭のbitを1」という方法で負の数を表します。この中でも絶対値表現は単純で↓のようなルールで負の数を表します。

絶対値表現 = 正の数の先頭bitを1にしたもの = 負の数

非常に単純なルールで↓のような対応関係になります(1バイト表現)

1 ⇒ 0001、 -1 ⇒ 1001
2 ⇒ 0010、 -2 ⇒ 1010
3 ⇒ 0011、 -3 ⇒ 1011

「1の補数表現 = 全bit逆転させて負の数を表す」

絶対値表現では先頭bitを1にする形で負の数に変換しましたが、1の補数表現では↓のような取り方をします。

1の補数表現 = 正の数のbitを全部逆転させる(1⇔0)

非常に単純なルールで↓のような対応関係になります(1バイト表現)

1 ⇒ 0001、 -1 ⇒ 1110
2 ⇒ 0010、 -2 ⇒ 1101
3 ⇒ 0011、 -3 ⇒ 1100

絶対値表現とは全く違う変換ですが、「負の数=先頭bitが1」というのは共通しています

1の補数表現のメリット:加算の演算回路がそのまま使える

1の補数表現のほうが、絶対値表現より良い点があります。それはコチラの記事で書いている加算演算回路がそのまま使えるという点です。
 
例えば -3 ⇒ -2 ⇒ -1 と1つずつプラスしていく場合を見てみると↓のようになります。

-3 ⇒ -2 ⇒ -1
1100 ⇒ 1101 ⇒ 1110

これは通常の論理的な足し算(2進数の足し算)と同じであり、マイナスであっても加算回路演算可能なことを意味しています!絶対値表現の場合はこのようになりません。

1の補数表現の問題点:「-0」があり、正の数と負の数の演算に修正が必要

これは絶対値表現でもあった問題です。

↓のように「1111=-0」という謎の数が出現します。

00000 ⇒ 0、1111 ⇒ -0

それゆえに、↓のように正数と負数を足した時、おかしくなる場合がでてきます。このパターンだと、オーバーフローを起こして、2+(-1)=0となってしまうんです。そのため、この場合補正が必要になります。

0010(+2) + 1110(-1)
↓普通に2進数加算
0000 (オーバーフローして0に)

このような補正が大変なので、、、次の記事で説明する「2の補数表現」を使うことが多いです。

「1の補数表現(負の数の表現)」をシミュレーターで確認してみよう!

実際に1バイト(8bit)で「1の補数表現(負の数の表現)」がどうなるか、シミュレーターで確認してみましょう!

シミュレーターの説明
  • 指定した絶対値(10進数)の正数と負数両方をbitで出力します
  • 正数と負数が、真逆になっていることを確認しましょう
  • 負の数は先頭bitが1であることも確認してみましょう

絶対値
0

まとめ:「1の補数表現の負の数 = 全bitを逆転(1⇔0)」

今回はコンピューターで負の数を表す方法の一つ、1の補数表現について説明しました。絶対値表現と比べて加算回路が負数でも使えるというメリットがありますが、「-0」という謎の数が生まれ、正の数と負の数の足し算で問題になる場合がでてきます。

この問題を解決した「2の補数表現」を次回記事では説明していきます!
 

まとめ

  • 「1の補数表現の負の数 = 全bitを逆転(1⇔0)」
  • 加算回路が使えるなどのメリットがあるが、一部計算で問題があり、特別処置が必要

 

[関連記事] コンピューターでの負の数の表し方
2.1の補数表現(本記事)

 


⇒「データ型」カテゴリ記事一覧

その他関連カテゴリ




お気軽にコメントお願いします!

Your email address will not be published. Required fields are marked *




記事カテゴリ