このブログを検索

2024/11/29

2進数を10進数に変換

工事担任者試験にはIPアドレスとかルーターとかスイッチとかも試験範囲になっている。Ciscoの資格試験やIPAの試験でも勉強したし実務でも日常的に接しているので第2級デジタルで問われる内容についてはここは自信のある分野である。

2進数を10進数に変換する問題が出てくるのだが、そのビット数は普段利用している8とか32とかではない。

原理としては、2進数を十進数に変換するには、下から1,2,4,8,.... を0or1に掛けて、つまり1になっているbitに2^n を掛けて足せばよい。

しかし、たとえば 11111111 という2進数があったときは、8bitで表現できる最大の値であるから255であり、11101111 であれば、255から16を引けばよい。

過去問を解いていて出てきたのは、9桁の2進数であった。

私は、「2^10が1024だから、それに1たりないから1023か」と考えてしまった。

だが、それで計算した結果が選択肢にないので普通に計算したが違う理由で間違っていた。

なんで間違ったのかなと考え直したところ、9桁の2進数でオール1の値は 2^9 - 1 で511である。10桁だったら1023である。

問題は、9桁のうち0が二つくらいしかなかったので、その位置だけ511から引けばよかった。