【问题标题】:Padded zeroes as a part of an input for a data structure [duplicate]填充零作为数据结构输入的一部分[重复]
【发布时间】:2020-11-19 20:03:04
【问题描述】:

所以我创建了一个自定义链表,并在测试它以确保其功能性时,我发现了一些奇怪的东西。

当我运行这段代码时:

    LinkedList<Integer> list = new LinkedList<>();
    
    System.out.println(list.isEmpty());
    
    list.add(13);
    list.add(423);
    list.add(23);
    list.add(022);
    list.add(122);
    list.add(25);
    
    System.out.println(list.get(1));
    
    System.out.println(list.isEmpty());
    
    for (Integer i: list) {
        System.out.println(i);
    }

我得到这个输出:

真 423 错误的 13 423 23 18 122 25

为什么022变成了18?

【问题讨论】:

标签: java


【解决方案1】:

因为它被视为八进制基数 (8),因为该数字的前导为 0。所以,它对应的十进制值为18。

022

= (2 * 8 ^ 0) + (2 * 8 ^ 1)
= (2 * 1) + (2 * 8)
=  2 + 16
=  18  

【讨论】:

  • 为什么是八进制?是因为 2 是最大的整数值吗?
  • 因为以 0 为前缀的整数文字被视为八进制。
猜你喜欢
  • 1970-01-01
  • 2019-03-15
  • 1970-01-01
  • 2018-09-01
  • 1970-01-01
  • 2016-12-28
  • 1970-01-01
  • 2018-07-11
  • 2014-10-05
相关资源
最近更新 更多