我正在做一个关于从一个字节中检索位的任务。当我刚刚检索一个字节时,我得到了错误的结果。对于一个字节
byte b = (byte) 00000011;
检索到的位按顺序
00001001
观察后我发现编译器解释了值
byte b = (byte) 00000011;
System.out.println(b); //value comes as 9
因此,当检索它时,它的二进制等效值为00001001
是正确的,有人可以建议为什么编译器将值解释为9吗?一个字节的默认格式是什么?
答案 0 :(得分:4)
文字00000011
是Java中的octal integer literal,在本例中是八进制11,相当于十进制的9。使用0b00000011
(使用0b
代替0
前缀)来制作二进制文字。
答案 1 :(得分:1)
解释器似乎将每个0或1视为8的倍数;所以,00000011
是8 + 1 = 9. 00000101
出现在65。