我在玩数字游戏,有些有趣的东西突然出现了,我不太明白。
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,也不会改变;
发布于 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
要获得更多信息,请查看这。
发布于 2014-03-12 15:20:56
您不会将二进制数字创建为二进制数字。您要将其创建为十进制(基数为10),恰好包含0和1s。
发布于 2014-03-12 15:22:24
要在Java 7中存储0111 1010,请使用新的二进制文本(您甚至可以使用下划线来方便阅读)
int binNumber = 0b0111_1010;https://stackoverflow.com/questions/22355927
复制相似问题