适用于Java的System.out.println

时间:2012-08-27 18:17:48

标签: java

System.out.println(052)System.out.println(0x2a)如何打印42?

这根本与二进制文件有关吗?

5 个答案:

答案 0 :(得分:7)

052octal(基数为8)的字面值 0x2ahexadecimal(基数为16)字面值。

答案 1 :(得分:4)

System.out.println(0x2a)使用 hex 文字(0x前缀表示此内容),其小数等值为42

System.out.println(052)使用八进制字面值(前导0表示此情况),其等效小数为42

System.out.println将根据十进制表示打印整数。如果您想保留十六进制,请尝试System.out.printf("%x\n", 0x2a),或者,对于八进制,"%o"代替"%x"

答案 2 :(得分:2)

0520x2a42都是编写(十进制,基本 10 )数字 42 的不同方式:

  • 052 octal ,或者 8
  • 0x2a十六进制,或者 16
  • 42是熟悉的十进制,基本 10

java允许您使用以下任何格式在代码中使用数字:使用前导0x指定十六进制,或使用前导零0指定八进制。

这与二进制文件有关,因为你用java做的任何东西都与二进制文件有关。

顺便说一下,42的二进制,基本 2 表示为:101010。你也可以在java中使用二进制文字,前面加上0b,所以0b101010 == 0x2a

答案 3 :(得分:1)

052,从0开始,所以它是一个八进制数,因此8 * 5 + 2 = 42 0x2a以0x开头,因此它是十六进制数,因此16 * 2 + a = 32 + 10 = 42

答案 4 :(得分:1)

052是八进制文字,相当于0 * 8^2 + 5 * 8^1 + 2 * 8^00x2a是十六进制文字,相当于2 * 16^1 + 10 * 16^0

5 * 8 + 22 * 16 + 10可以看作是等效的,因为5 * 8相当于4 * 8 + 8,而8 + 2等于10。< / p>