
2進数って重要なの?

新人Y子
そもそも、2進数って使うのですか?

しげちゃん先生
開発する分野にもよります。
分野によっては、2進数を意識せずにプログラミングできます。
ただ、特にIoTなど組込系においては2進数の使用頻度は少なくありません。
このため、理解しておくことをお勧めします。
分野によっては、2進数を意識せずにプログラミングできます。
ただ、特にIoTなど組込系においては2進数の使用頻度は少なくありません。
このため、理解しておくことをお勧めします。

新人Y子
IoTに興味があるので、2進数をもっと詳しく教えてください!
2進数を理解しよう

しげちゃん先生
ではまず、2進数の性質を知るため、0から1づつ足していってみましょう。

しげちゃん先生
char型(8ビット整数型)で、0は、「00000000」です。
では、次の数の1は、どうなるでしょう?
では、次の数の1は、どうなるでしょう?

新人Y子
「00000001」ですか?

しげちゃん先生
はい。その通りです。
それでは、その次の2は何になるでしょう?
先ほどの「00000001」に、1を足してください。
それでは、その次の2は何になるでしょう?
先ほどの「00000001」に、1を足してください。

新人Y子
1+1=2 ですよね。でも、2進数に「2」という記号はないのですよね。

しげちゃん先生
そうですね。このため、桁は繰り上がります。

新人Y子
では、えーっと「00000010」ですか?

しげちゃん先生
正解です!
同様に10まで、1づつ足していってください。
同様に10まで、1づつ足していってください。

新人Y子
3は、「00000011」
4は、「00000100」(2桁目繰り上がり)
5は、「00000101」
6は、「00000110」
7は、「00000111」
8は、「00001000」(3桁目繰り上がり)
9は、「00001001」
10は、「00001010」
4は、「00000100」(2桁目繰り上がり)
5は、「00000101」
6は、「00000110」
7は、「00000111」
8は、「00001000」(3桁目繰り上がり)
9は、「00001001」
10は、「00001010」

しげちゃん先生
正解です。
2進数は繰り上がりが早いので、10進数では1桁の数(0~9)を表すのに、2進数では4桁になっていることが分かると思います。
さて、次にマイナス値の表現について見てみましょう。
2進数は繰り上がりが早いので、10進数では1桁の数(0~9)を表すのに、2進数では4桁になっていることが分かると思います。
さて、次にマイナス値の表現について見てみましょう。

新人Y子
はい。

しげちゃん先生
コンピュータの場合、符号もビットで表現するんです。
一番左(最上位)のビットが符号ビットです。符号ビットが「1」になっているものがマイナス値になります。
一番左(最上位)のビットが符号ビットです。符号ビットが「1」になっているものがマイナス値になります。
例)char型の符号ビット

新人Y子
という事は、例えば、-1は、「10000001」になるのでしょうか?

しげちゃん先生
惜しい!
一般的なコンピュータは、そう表現しないんです。
一般的なコンピュータは、そう表現しないんです。

新人Y子
なぜでしょう?

しげちゃん先生
理由は、ゼロの状態が、ゼロと、マイナスゼロの2つできてしまい、何かと都合がよくないんです。

新人Y子
確かにそうですね。
では、どうやって表現するのでしょう?
では、どうやって表現するのでしょう?

しげちゃん先生
「2の補数」という表現をします。

新人Y子
2の補数?

テクトレージマン
次回に続く