Hoicos Blog

Author: かどけん

2進数とコンピュータ

コンピュータで使われる2進数での計算や補数表現
3709816 m 1024x576 - 2進数とコンピュータ-%e3%83%91%e3%82%bd%e3%82%b3%e3%83%b3-自由研究, パソコン

皆さんはコンピュータがどのように計算を行い膨大なデータを保存しているか知っていますか??様々な手段が開発され日々進化し続けていますがその根底にあるのは2進数の考え方です。電気信号のオンとオフこれこそがコンピュータを作り上げるすべてです。

今回は具体的な二進数の使われ方や考え方について共有できたらなと思います。それではいってみましょう。

2進数とは

そもそも2進数とは一体何でしょう。2進数は、「0」もしくは「1」のみで表現される数です。 0→1→10→11→100 といった桁の上がり方をし、コンピュータへ命令できる機械語やバイナリコードといったものもすべて2進数で表されます。特徴としては、1つの桁を1と0のみで表現できるため、電子工作などにおけるスイッチの入切、プラスマイナスの反転などによって数値表現を行うことができます。(Weblio辞書参考

負数表現

ここで2進数8桁(1byte)で表現できる値の範囲を考えてみましょう。正の数(+)にの数値については0(00000000b)から255(11111111b)まで表せるから、256通りの数値を表現することができるといえます。次に負の数(-)を考えてみます。この場合絶対値表現補数表現という2つの表現方法があります。

絶対値表現

絶対値表現の特徴は符号と数値を分けて考えるところにあります。一番左の値を符号とし、正の場合には0を、負の場合には1を入力し残りの7桁で数値を表現するのです。ただそれだけなのでそこまで難しくないと思います。しかしここで表せる数値の範囲について絶対値表現には+0(0000000b)と-0(10000000b)という冗長な表現が存在するため(+0と-0は同じ値)正の数のみを考える場合より表せる数値の範囲が狭くなると言えます。( 0 だけで 2 つの表現方法があり、これが余分である)

note1 1024x648 - 2進数とコンピュータ-%e3%83%91%e3%82%bd%e3%82%b3%e3%83%b3-自由研究, パソコン

補数表現

まず補数の理解を深めるため 10 進数(我々が日々使うやつ)についての補数について説明します。元の数に対して各桁が足して 9 になるような数値を 9 の補数と呼び、その値( 9 の補数)に1を足した数が 10 の補数となります。(例 123の9の補数:876、10の補数:877)同じように 2 進数での 1 の補数と 2 の補数はそれぞれ元の数にその補数を足すことで桁の数がすべて 1 になるような数とその数に 1 を足した数となります。2 進数においてはこの 2 の補数の値こそが負の数として扱われるのです。2の補数を使って負数を表現することのメリットは+0と-0という冗長な表現もなくより多くの数値を表現できるのはもちろん、ここでは詳しく説明しないですが計算のオーバーフローなどの処理がしやすいなど様々なものが存在します。であるからしてこの2の補数表現を使った負数表現は多くのコンピュータで使われているのです。

note2 1024x796 - 2進数とコンピュータ-%e3%83%91%e3%82%bd%e3%82%b3%e3%83%b3-自由研究, パソコン

こうやって負数表現を行うことで加算回路と組み合わせコンピュータ上で加算と減算は行われています。乗算に関しても加算を繰り返すことで計算をしているため実質これだけで加減乗の基本までは学ぶことができました。除算に関してはゴールドシュミット法SRT除算などの様々なアルゴリズムがあるので興味がある方は一度調べてみるとよいかもしれません。

最後に

いかがだったでしょうか?
今回はコンピュータにおける2進数の扱いなどについて紹介させていただきました。これはコンピュータの根幹部分をなす重要な要素なので覚えておくと役に立つかもしれませんよ。

この2進数と排他的論理和を含む論理関数を組み合わせることで電流の入り切りだけで四則演算やデータの保存をコンピュータは行っているのです。その詳しい仕組みについてはかなり専門的な話になってしまいますが、要望があれば次回以降紹介してみますね。(もっとコンピュータについて書きたかったんですが前提である論理関数の説明とかするともう一本記事書けてしまいそうなので…)

最後まで読んでいただきありがとうございました!!



この記事がいいと思ったら↓のシェアボタンから

Comments

Leave a Comment

入力エリアすべてが必須項目です。メールアドレスが公開されることはありません。

内容をご確認の上、送信してください。