【问题标题】:How casting works in java using modulo使用模数在java中如何进行强制转换
【发布时间】:2017-04-15 09:01:47
【问题描述】:

下面的代码结果“39 44”作为输出。我在某处读到铸造在这里使用模数。我知道如何计算模数的基本方法,例如 10%3 = 1,但我仍然不知道它是如何计算的。

class conversion {
    public static void main(String args[]) 
    {    
         double a = 295.04;
         int  b = 300;
         byte c = (byte) a;
         byte d = (byte) b;
         System.out.println(c + " "  + d);
    } 
}

【问题讨论】:

  • Java 语言规范中精确定义了其工作原理:docs.oracle.com/javase/specs/jls/se8/html/jls-5.html#jls-5.1.3。并且不涉及模数。
  • 嗯,错了。
  • @Shashwat:答案说结果是相同的好像 %被使用。那不是一回事。 “乘法是如何工作的”可以说乘法 x * y 的结果与开始一个 0 的总和并将 x 加到它 y 次......但这不是乘法在 CPU 中发生的方式。
  • 另外,以 500 为例,您会发现模 128 的结果和强制转换的结果是不同的。

标签: java casting byte


【解决方案1】:

字节的范围是 -128 到 127。 所以字节(128)将是-128。 字节(129)将为-127。 字节(256)将为0。 字节(257)=1 字节(295)=39。 字节(295.04)=字节(295)=39。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-06
    • 2010-11-15
    • 1970-01-01
    • 2020-05-21
    • 1970-01-01
    相关资源
    最近更新 更多