gpt4 book ai didi

java - 理解这个程序中的转换

转载 作者:行者123 更新时间:2023-11-29 08:14:08 25 4
gpt4 key购买 nike

byte b = 5;
byte c = ~5;

此代码如果用 java 编写,会给出无法从 int 转换为 byte 的错误。如果我这样做也是

int c = ~5;

结果为 -6,但我期待的是 3。这是什么原因,我该怎么做才能不达到 3。

最佳答案

你得到的是负数而不是正数,因为字节原语(如 short、int、long 等)是有符号的——所以最高有效位被翻转,所以它代表负数(使用 two's complement 。 ) 反转正数上的所有位,它将变为负数(反之亦然。)

就是说,如果没有,您无论如何也不会得到 3 - 5 在二进制中是 101,这将产生 010(2,而不是 3。)

至于为什么它必须放在一个 int 中,从内存来看,这是因为 JLS 声明所有整数运算的返回类型“至少”是一个 int。这与您执行 byte b = 1+1 的原因相同,它仍然无法正常工作,即使结果显然适合一个字节。

关于java - 理解这个程序中的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5868371/

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