Javaマスターへの道 資格勉強編 Part15
最近資格勉強編ばかりになってしまっていますが、勉強は大事ですからね一緒に学びを得ていきましょう!
[実はネタに困っているということは秘密ですよ(笑)]
今回初めてプログラムではなく選択肢から答えを選ぶ形式ですので気軽に解いてみてください。
では問題です。
次の式のうち、コンパイルエラーになるものはどれでしょうか一つ選んでくださいね。
A、 int a = 267;
B、 int b = 0413;
C、 int c = 0x101B;
D、 int d = 0b10010;
E、 int e = 0827
この問題では数字の表記方法がカギとなっています。
普段私たちがよく使うのは0から9までの10種類を組み合わせて使いますよね。
ただ表記の仕方は他にもあるので、それを知っているとこの問題はすぐに解けると思います。
では回答編です。
まず注目したいのはすべてint型で宣言されていますので、数字大きすぎてエラーになるということはなさそうです。
int型は32ビットサイズまで格納できますので、約±21億5000万まで表現できるので今回は大丈夫そうです。
では次に先ほど話した表記の仕方を見ていきましょう。
Aは267と書いてありますので、これは普段私たちにも馴染み深い10進数で表されていますので問題ありません。
Bは0413と書いてありますね、先頭に[0]を付けて表記するのは8進数というもので
8進数は0から7までの8種類で表記しなければなりませんが、Bを見ると先頭の0は接頭辞なので
無視するとして413に注目すると使えない数字はないので大丈夫です。
Cは0x101Bとなっていて、先頭に[0x]を付けるこの形式は16進数というものなので
0から9の数字とAからFの合計16種類を使って表記することが可能です。
なので問題ありませんので、大丈夫です。
Dは0b10010となっているので、先頭に[0b]がついているこの形は2進数となります。
2進数とは0と1のみで数字を表現する表記方法で機械は2進数しか認識できないことはすでに有名ですね。
問題に戻ると0と1のみで書かれていますので、こちらも大丈夫です。
なので残った最後のEの0827がコンパイルエラーとなります。
Eは8進数で表記されていますが、8進数では0から7までの数字で書かれなければいけないのですが、
今回の値は8が入っていますので、コンパイルエラーとなってしまいます。
今日のテーマは数字の表記方法でしたが、PCなどの機械は2進数で動いていますので是非覚えていってくださいね。