字节数据类型的默认格式

时间:2015-05-04 10:12:25

标签: java byte

我正在做一个关于从一个字节中检索位的任务。当我刚刚检索一个字节时,我得到了错误的结果。对于一个字节

byte b = (byte) 00000011;

检索到的位按顺序

00001001

观察后我发现编译器解释了值

byte b = (byte) 00000011;
System.out.println(b); //value comes as 9

因此,当检索它时,它的二进制等效值为00001001是正确的,有人可以建议为什么编译器将值解释为9吗?一个字节的默认格式是什么?

2 个答案:

答案 0 :(得分:4)

文字00000011是Java中的octal integer literal,在本例中是八进制11,相当于十进制的9。使用0b00000011(使用0b代替0前缀)来制作二进制文字。

答案 1 :(得分:1)

解释器似乎将每个0或1视为8的倍数;所以,00000011是8 + 1 = 9. 00000101出现在65。

相关:09 is not recognized where as 9 is recognized