当我在c#和java中执行代码时,我会得到不同的输出。
在c#中,获得了输出254
,但在java中得到了输出-2
。为什么它在输出方面表现不同?但我想在java中输出相同的输出意味着我想要输出254
。
在c#代码中:
static void Main(string[] args)
{
byte value = 1;
System.Console.WriteLine("Value after conversion {0}", (byte)(~value));
}
输出:254
在Java代码中:
public static void main(String[] args) {
byte value = 1;
System.out.println((byte)(~value ));
}
输出:-2
答案 0 :(得分:10)
在C#byte
中表示无符号 8位整数值,即其范围为0-255。但是,在Java中,字节是带符号的 8位整数值,即其范围是-128-127。 -2(有符号)具有与254(无符号)相同的二进制表示。
答案 1 :(得分:0)
要在Java中获取无符号的8位值,您需要执行& 0xFF
尝试
System.out.println(~1 & 0xFF);
或
System.out.println((byte) ~1 & 0xFF);