c# - java 和 c# 中右移运算符的不同结果

标签 c# java operators

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/

相关文章:

c# - 在安装包期间如何通过 Sitecore API 导入序列化项目?

c# - 在 2D 中顺时针右转角度?

c# - 如何使用每个单词一个按钮(单击)将单词添加(附加)到同一个句子中

Java JTable 更新行

java - 守护进程未运行。现在在端口 5037 上启动它 * 无法打开 'nul' : The system cannot find the file specified

PHP字符串表达式错误: what is happening here?

c# - 如何查看一个类是否实现了与Roslyn的接口(interface)

java - 显式置零

powershell - 在Powershell中,句点 '.'运算符有什么作用?

c++ - 为什么结构类型的数组不能正常工作?