gpt4 book ai didi

java - Java 中的自动类型提升

转载 作者:行者123 更新时间:2023-12-02 11:07:49 24 4
gpt4 key购买 nike

我知道操作数会自动转换为 int,我们需要再次将表达式转换为 byte。对于字节转换,24 位被截断,仅评估 8 位。但我无法理解这个输出-56。 e的最终值为200,转换为二进制为11001000。输出-56如何?

 public class ByteIntAutomaticPromotionInExpressions {
public static void main(String[] args) {
byte e = 50;
e = (byte)(e *2);
System.out.println(e);
e *= 2;
System.out.println(e);


}
}

输出:

100
-56

最佳答案

正如您在这里看到的:

byte: The byte data type is an 8-bit signed two's complement integer. It has a minimum value of -128 and a maximum value of 127 (inclusive).

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

如果数据类型是无符号的,则 11001000 将是十进制的 200。但由于它是有符号的,所以您将其视为负二进制数,即 -(反转位 +1) => - (0110111 + 1) = -(0111000) = -56

https://www.allaboutcircuits.com/textbook/digital/chpt-2/negative-binary-numbers/

关于java - Java 中的自动类型提升,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50821370/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com