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から引けばよかった。