Java 使用公式int unsignedByte=signedByte>;=0 ? signedByte:256+;有符号字节;

Java 使用公式int unsignedByte=signedByte>;=0 ? signedByte:256+;有符号字节;,java,byte,unsigned,sign,Java,Byte,Unsigned,Sign,有人告诉我,要在java中将有符号字节转换为无符号字节,我们可以使用以下公式 int unsignedByte = signedByte >= 0 ? signedByte : 256 + signedByte; 但例如,如果我有一个signedByte值1(字节值范围从-128到127),我使用这个公式,因此1>=0的计算结果为true,因此使用第一个表达式,结果是1+1,等于2。但我希望在unsignedByte中用129表示相同的数字 是我的理解有问题还是这个公式有问题 如能提供实

有人告诉我,要在java中将有符号字节转换为无符号字节,我们可以使用以下公式

int unsignedByte = signedByte >= 0 ? signedByte : 256 + signedByte;
但例如,如果我有一个signedByte值1(字节值范围从-128到127),我使用这个公式,因此
1>=0
的计算结果为
true
,因此使用第一个表达式,结果是
1+1
,等于
2
。但我希望在unsignedByte中用129表示相同的数字

是我的理解有问题还是这个公式有问题


如能提供实际有符号和无符号值的示例,将不胜感激

您可以像这样使用按位AND运算符:

int unsignedByte = signedByte&255;
从本质上说,这增加了允许的空间,从而将指示其是否为负值的位更改为更高的位(索引为0时为31)
)

您可以像这样使用按位AND运算符:

int unsignedByte = signedByte&255;
从本质上说,这增加了允许的空间,从而将指示其是否为负值的位更改为更高的位(索引为0时为31)
)您误解了三元运算符:

int unsignedByte =
   signedByte >= 0 ? 
      signedByte  // you get this
      : 256 + signedByte; // or this
而不是

int unsignedByte =
   (signedByte >= 0 ? signedByte  : 256) 
   + signedByte;

您误解了三元运算符:

int unsignedByte =
   signedByte >= 0 ? 
      signedByte  // you get this
      : 256 + signedByte; // or this
而不是

int unsignedByte =
   (signedByte >= 0 ? signedByte  : 256) 
   + signedByte;

因此,如果我有一个值为1的有符号字节,signedByte>=0计算为true,int unsignedByte=1?但我认为int unsignedByte应该等于129?“unsignedByte=1?但我认为int unsignedByte应该等于129?”不,那是错误的。请参阅:为了安全起见,您可以始终将
256+带符号字节
放在括号中,从而消除所有可能的怀疑。@America船长,当
>=0
时,您要求输入值本身,因此您得到了
1
。“Unsigned”表示“肯定”,是吗?而且
1
是正的,是吗?所以
1
的“无符号”值是<代码>1,是吗?如果我有一个值为1的有符号字节,signedByte>=0计算为true,int unsignedByte=1?但我认为int unsignedByte应该等于129?“unsignedByte=1?但我认为int unsignedByte应该等于129?”不,那是错误的。请参阅:为了安全起见,您可以始终将
256+带符号字节
放在括号中,从而消除所有可能的怀疑。@America船长,当
>=0
时,您要求输入值本身,因此您得到了
1
。“Unsigned”表示“肯定”,是吗?而且
1
是正的,是吗?所以
1
的“无符号”值是<代码>1,是吗?