为什么按位补码运算符'〜'在c#和java中表现不同?

use*_*847 4 c# java byte operators

当我在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));
}
Run Code Online (Sandbox Code Playgroud)

输出:254

在Java代码中:

public static void main(String[] args) {
        byte value = 1;
        System.out.println((byte)(~value ));
}
Run Code Online (Sandbox Code Playgroud)

输出:-2

Hoo*_*pje 10

在C#中byte表示无符号的 8位整数值,即其范围是0-255.但是,在Java中,字节是带符号的 8位整数值,即其范围是-128-127.-2(带符号)具有与254(无符号)相同的二进制表示.