それはどうですかSystem.out.println(052)
、System.out.println(0x2a)
両方とも42を印刷しますか?
これはバイナリとまったく関係がありますか?
それはどうですかSystem.out.println(052)
、System.out.println(0x2a)
両方とも42を印刷しますか?
これはバイナリとまったく関係がありますか?
System.out.println(0x2a)
は16 進リテラル (0x
接頭辞はこれを示します) を使用し42
ます。
System.out.println(052)
は8 進リテラルを使用し (先頭0
はこれを示します)、10 進表記は is42
です。
System.out.println
10 進数表現に従って整数を出力します。16 進数を維持したい場合はSystem.out.printf("%x\n", 0x2a)
、または、8 進数の場合"%o"
は の代わりに試してください"%x"
。
052
、0x2a
および(10 進数、基数10 ) 数値4242
を記述するすべての異なる方法です。
052
は8 進数、または基数8です0x2a
16 進数、または基数16です42
はおなじみの10 進数で、基数は10ですJava では、これらの異なる形式のいずれかを使用して、コード内で数値を文字どおりに使用できます。先頭に を使用して0x
16 進数を指定するか、先行ゼロを使用0
して 8 進数を指定します。
これは、Java で行うすべてのことがバイナリーと関係があるのと同じように、バイナリーと関係があります。
ちなみに、42 の 2 進数の 2 進数表現は次のとおりです。前に, soを付けることで、Java でバイナリリテラルを使用することもできます。101010
0b
0b101010 == 0x2a
052、0 で始まるので 8 進数なので 8*5+2=42 0x2a は 0x で始まるので 16 進数なので 16*2+a = 32 + 10=42
052
は 8 進数リテラルで、 と同等0 * 8^2 + 5 * 8^1 + 2 * 8^0
です。
0x2a
と同等の 16 進数リテラル2 * 16^1 + 10 * 16^0
です。
5 * 8 + 2
およびは、 および と同等であるように、同等であると見なす2 * 16 + 10
ことができます。5 * 8
4 * 8 + 8
8 + 2
10