【ライタスの日常】資格勉強で学んだ「2進数の足し算・引き算」の話

 こんにちは。

ライタスの営業担当・Kです。


資格勉強の続きとして、

最近は 2進数の足し算・引き算 について学んでいます。


普段あまり意識しない部分ですが、

コンピューターの内部処理を理解するうえで

とても重要な考え方だと感じました。


2進数の足し算


2進数の足し算はとてもシンプルで、

足して「2」になったら繰り上がる、これだけです。


例えば、


0 + 1 = 1

1 + 0 = 1

1 + 1 = 10(2になったので繰り上がり)


10進数と同じ考え方ですが、使う数字が「0」と「1」だけなので、慣れると直感的に理解できます。


2進数の引き算はどうしているのか?


実はコンピューターは、

引き算を直接行っていません。


引き算の代わりに行っているのが、

「負の数を足す」 という考え方です。


そのために登場するのが 2の補数 です。


負の数は「2の補数」で表す


2進数で負の数を表すときは、次の手順を使います。


正の数を2進数で表す


0と1をすべて反転させる(ビット反転)


その結果に「1」を足す


この

「反転して+1」

を行ったものが、2の補数です。


2の補数の特徴(補足)


2の補数にはいくつか重要な特徴があります。


十分なビット数が確保されている場合、

先頭ビットが符号ビットとして使われる


0:正の数

1:負の数


コンピューターには「−(マイナス)」の記号が存在しない

→ その代わりに先頭ビットで符号を表現している


2の補数に、同じ「2の補数の操作」を行うと

元の正の数に戻る


このあたりは仕組みとして知っておくと、計算問題の理解がかなり楽になります。


8ビット2進数で表せる数の範囲


ここも試験対策として重要なポイントです。


例として、

2進数「10000001」を10進数に変換してみます。


符号なしとして扱う場合

→ 129


**符号付き(2の補数)**として扱う場合

→ 先頭ビットが「1」なので負の数

→ ビット反転して「1」を足す

→ 01111111(=127)

→ よって −127


この考え方から、8ビット2進数で表せる範囲は以下の通りになります。


符号なし2進数:0 ~ 255


符号付き2進数:−128 ~ 127


まとめ


最初はややこしく感じましたが、

「コンピューターは足し算しかしていない」

と考えると、少し理解しやすくなりました。


引き続き、

勉強した内容はノートにまとめつつ、

こうしてアウトプットしていこうと思います。


それでは、今日はこのあたりで。








































――――――――――――――
このブログは、ライタス株式会社のメンバーが 日々の業務や日常の中で感じたことを、 ゆるく綴っているブログです。
仕事の話から日常のちょっとしたことまで、 ライタスの雰囲気が少しでも伝われば嬉しいです。

――――――――――――――

#ライタスの日常

#資格勉強

#基本情報技術者

#2進数

#2の補数

#学びのアウトプット

コメント

このブログの人気の投稿

Firefoxを起動したら、Couldn't load XPCOM. というエラーが出る時の対処法 | ライタス株式会社

Hyper-VゲストOS再起動にご注意 | ライタス株式会社

Outlookから送るとエラーになるのに、Office365のOnline Outlookで送ると大丈夫 | ライタス株式会社