1

それはどうですかSystem.out.println(052)System.out.println(0x2a)両方とも42を印刷しますか?

これはバイナリとまったく関係がありますか?

4

5 に答える 5

7

0528 進数(基数 8) のリテラルです。16 進数(基数 16) のリテラルです
0x2a

于 2012-08-27T18:18:45.470 に答える
4

System.out.println(0x2a)16 進リテラル (0x接頭辞はこれを示します) を使用し42ます。

System.out.println(052)8 進リテラルを使用し (先頭0はこれを示します)、10 進表記は is42です。

System.out.println10 進数表現に従って整数を出力します。16 進数を維持したい場合はSystem.out.printf("%x\n", 0x2a)、または、8 進数の場合"%o"は の代わりに試してください"%x"

于 2012-08-27T18:19:07.683 に答える
2

0520x2aおよび(10 進数、基数10 ) 数値4242を記述するすべての異なる方法です。

  • 0528 進数、または基数8です
  • 0x2a16 進数、または基数16です
  • 42はおなじみの10 進数で、基数は10です

Java では、これらの異なる形式のいずれかを使用して、コード内で数値を文字どおりに使用できます。先頭に を使用して0x16 進数を指定するか、先行ゼロを使用0して 8 進数を指定します。

これは、Java で行うすべてのことがバイナリーと関係があるのと同じように、バイナリーと関係があります。

ちなみに、42 の 2 進数の 2 進数表現は次とおりです。前に, soを付けることで、Java でバイナリリテラルを使用することもできます。1010100b0b101010 == 0x2a

于 2012-08-27T18:19:34.077 に答える
1

052、0 で始まるので 8 進数なので 8*5+2=42 0x2a は 0x で始まるので 16 進数なので 16*2+a = 32 + 10=42

于 2012-08-27T18:20:31.320 に答える
1

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 * 84 * 8 + 88 + 210

于 2012-08-27T18:23:17.973 に答える