Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java整数处理_Java - Fatal编程技术网

java整数处理

java整数处理,java,Java,当我运行这个程序时,它输出-43 public class Main { public static void main(String[] args) { int a=053; System.out.println(a); } } 为什么会这样?053是如何变成-43的?我不知道它是如何变成负数的,但以0开头的整数指定它是八进制(以8为基数)53是十进制中的43。它打印出43,而不是-43。这是因为如果你写一个前导为0的数字,它是一个八进制常数

当我运行这个程序时,它输出-43

public class Main {
    public static void main(String[] args) {
        int a=053;
        System.out.println(a);
    }
}

为什么会这样?053是如何变成-43的?

我不知道它是如何变成负数的,但以
0
开头的整数指定它是八进制(以8为基数)<八进制中的代码>53是十进制中的
43

它打印出43,而不是-43。这是因为如果你写一个前导为0的数字,它是一个八进制常数

从这里开始

int octVal=032;//数字26,八进制

java教程

int decVal=26;//以十进制表示的数字26

int octVal=032;//数字26,八进制这是通过谷歌搜索“如何将八进制转换为十进制”

从八进制到十进制

  • 从0开始计算十进制结果
  • 删除最有效的八进制数字(最左边)并将其添加到结果中
  • 如果所有的八进制数字都被删除了,那么就完成了。停下来
  • 否则,将结果乘以8
  • 转至步骤2
  • 所以0+5=5,5*8=40,40+3=43,正如上面所说:

    八进制数字由ASCII数字0后跟一个或多个数字组成 在ASCII数字0到7之间穿插下划线,并且可以 表示正整数、零整数或负整数

    其格式为:

    OctalNumeral:
        0 OctalDigits
        0 Underscores OctalDigits
    
    所以,如果你使用

    int octVal = 053;
    
    或者


    两个都是43。

    顺便说一句,在我的机器中它返回43,而不是-43nahh。。。我就在地球的另一边离最近的SOF服务器。。。我从来没有提供任何问题的第一个答案,我也不希望。。。这个问题(我怀疑)在我看到它之前已经有几分钟了。
    int octVal = 053;
    
    int octVal = 0_53;