【问题标题】:default format for byte data type字节数据类型的默认格式
【发布时间】:2015-05-04 10:12:24
【问题描述】:

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

byte b = (byte) 00000011;

检索到的位是按顺序排列的

00001001

观察后发现编译器会解释值

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

所以当检索它时,它给出了它的二进制等价物00001001,这是正确的,任何人都可以建议为什么编译器将值解释为 9?字节的默认格式是什么?

【问题讨论】:

    标签: java byte


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • “解释器似乎将每个 0 或 1 视为 8 的倍数”,因为以 0 开头的数字会被处理作为octal value
      猜你喜欢
      • 1970-01-01
      • 2014-03-29
      • 1970-01-01
      • 1970-01-01
      • 2021-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多