首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >二进制,十六进制,十进制比较

二进制,十六进制,十进制比较
EN

Stack Overflow用户
提问于 2014-03-12 15:17:36
回答 6查看 993关注 0票数 5

我在玩数字游戏,有些有趣的东西突然出现了,我不太明白。

代码语言:javascript
复制
 public static void main(String[] args) {
         int hexNumber = 0x7A;//decimal: 122  binary:0111 1010
         int decNumber = 122;
         int binNumber = 1111010;

   System.out.println(hexNumber);//122
   System.out.println(Integer.toString(hexNumber, 16)); //7a
   System.out.println(Integer.toHexString(hexNumber));  //7a
   System.out.println(Integer.toString(hexNumber, 2)); //   1111010
   System.out.println(Integer.toBinaryString(hexNumber)); //1111010

   System.out.println(hexNumber==binNumber);//false
   System.out.println(hexNumber==decNumber);//true
   System.out.println(decNumber==binNumber);//false
    }

为什么我会在第一和第三处出现“假”?即使binNumber =01111010,也不会改变;

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2014-03-12 15:20:05

如果没有任何前缀,您就不能直接在Java中存储二进制值。

binNumber不是作为二进制数1111010存储的,而是作为十进制数字1111010存储的。您必须将其存储为int binNumber = Integer.parseInt("1111010", 2);,或者更好的是int binNumber = 0b1111010;

八进制的

int octalNo = 0177; //'0' is prefix

int octalNo = Integer.parseInt("0177", 8); //leading '0's are ignored

十六进制的

int hexNo = 0x177; //'0x' is prefix

int hexNo = Integer.parseInt("0177", 16); //leading '0's are ignored

要获得更多信息,请查看

票数 5
EN

Stack Overflow用户

发布于 2014-03-12 15:20:56

您不会将二进制数字创建为二进制数字。您要将其创建为十进制(基数为10),恰好包含0和1s。

票数 2
EN

Stack Overflow用户

发布于 2014-03-12 15:22:24

要在Java 7中存储0111 1010,请使用新的二进制文本(您甚至可以使用下划线来方便阅读)

代码语言:javascript
复制
int binNumber = 0b0111_1010;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22355927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档