添加二进制数的十六进制

时间:2014-04-30 06:11:41

标签: java

我正在尝试了解以下程序输出的原因。

public class CrossAddition{
  public static void main(String[] args){
    int decimal = 267;
    int octalValue = 0413;
    int hexadecimalValue = 0X10B;
    int binValue = 0b100001011;
    System.out.println("Decimal plus octal = "+ decimal+octalValue);//267267
    System.out.println("HexaDecimal plus binary = "+ hexadecimalValue+binValue);//267267
  }
}

以下是我对这个问题的分析 第一个sysout中的octalValue转换为十进制,即..,octalVlaue 0413的十进制等效值为267.现在267 + 267应 534 。但是在这里,第一个sysout的输出是267267。

第二个sysout,hexadecimalValue 0X10B首先转换为十进制,输出267.并且,binValue转换为十进制,输出267.现在267 + 267应该 534 ,但它不是真的,它显示267267。

它像字符串连接一样工作。我怎么能理解这个?

2 个答案:

答案 0 :(得分:4)

使用如下

System.out.println("Decimal plus octal = "+ (decimal+octalValue));
System.out.println("HexaDecimal plus binary = "+ (hexadecimalValue+binValue));

"Decimal plus octal = "+ decimal+octalValue被处理为String("Decimal plus octal = ")+ String(deimal)+String(octalValue)因此问题。

您更喜欢String("Decimal plus octal = ")+ String(deimal + octalValue)

之类的内容

答案 1 :(得分:3)

Java从左到右开始操作,所以它将首先使用字符串附加十进制,这将是“Decimal plus octal = 267”,然后在其上添加octalValue,这样输出将变为 “十进制加八进制= 267267”