java - 使用 NOT 运算符时的字节转换

标签 java types casting

为什么我需要在这个例子中使用变量转换?

byte b = -123;
b = (byte) ~b;

当我尝试编译它而不进行强制转换时,我得到:

NotDemo.java:17: error: possible loss of precision

最佳答案

因为对于大多数 Java 运算符(包括 ~),整数操作数为 promoted在应用运算符之前。所以byte提升为int;您的代码相当于:

b = (byte) ~((int) b);

因此,一般来说,分配回字节将会丢失高位中的信息。 (尽管在这种情况下它毫无意义。)

关于java - 使用 NOT 运算符时的字节转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20934314/

相关文章:

java - 仅在使用 java 11 的 Windows 10 上,64 位 dll 的内存访问无效

javax.crypto.BadPaddingException : Given final block not properly padded - full example

Scala:如何使用类型参数化在类内部打印

java - 实现 URL.openConnection() 以便可以进行强制转换

c++将 union 转换为其成员类型之一

java - Hibernate引用@MapKey

java - 使用 AES/ECB/NoPadding 与 PKCS5Padding 进行加密

斯卡拉 : Match of parameter Type

types - Coq 中的类型封装

java - 在颜色数组中转换随机颜色