B这是代码:
c#
private void button1_Click(object sender, EventArgs e)
{
int a = -33554432;
byte b = (byte)(a >> 24);
MessageBox.Show(b.ToString());
}
java
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
int a = -33554432;
byte b = (byte)(a >> 24);
JOptionPane.showMessageDialog(null, Byte.toString(b));
}
我已经阅读过这个问题,并且我相信有一种相对简单的方法来理解不同的行为,但我需要一些帮助来实现这种理解。请问有人要吗?
非常感谢!
编辑:好的,现在使用 Byte.toString()。 c# 的输出 = 254 java = -2
最佳答案
Java byte
已签名,因此如果数字为负数,>>
将从左侧填充 1
位。
C# byte
是无符号的,因此 >>
运算符填充 0
位。
要么在 C# 代码中将 byte
更改为 sbyte
,要么在 Java 中使用 >>>
。
关于c# - java 和 c# 中右移运算符的不同结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7649853/