Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# java和c中右移运算符的不同结果_C#_Java_Operators - Fatal编程技术网

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

C# java和c中右移运算符的不同结果,c#,java,operators,C#,Java,Operators,这是密码: c 爪哇 我已经阅读了这个问题,我相信有一个相对简单的方法来理解不同的行为,但是我需要一些帮助来达到这个理解。有人要吗 非常感谢 编辑:好,现在使用Byte.toString。java中c=254 java=-2字节的输出是有符号值。在这种情况下,您实际上可以使用: // Note the triple > int b = a >>> 24; 或者: byte b = (byte) (a >> 24); int c = b & 0xff;

这是密码:

c

爪哇

我已经阅读了这个问题,我相信有一个相对简单的方法来理解不同的行为,但是我需要一些帮助来达到这个理解。有人要吗

非常感谢


编辑:好,现在使用Byte.toString。java中c=254 java=-2字节的输出是有符号值。在这种情况下,您实际上可以使用:

// Note the triple >
int b = a >>> 24;
或者:

byte b = (byte) (a >> 24);
int c = b & 0xff;
Java字节是有符号的,因此如果数字为负数,则>>将从左边填充1位

C字节是无符号的,因此>>运算符将填充0位


在C代码中将byte改为sbyte,或者在Java中使用>>>。

尝试在Java中使用>>>。这会在不考虑符号位的情况下进行位移位。

在Java中,好奇的整数.toString在字节上?为什么不使用Byte.toString?你也可以提供一个输出。我很确定没有谢谢Jon,另一部分就是答案。将在一分钟内标记它。>>>无法使用指定的代码,这是我在这里询问的原因之一。@ShunyataKharg:当你说>>>无法使用时-你尝试时发生了什么?应该没问题。
// Note the triple >
int b = a >>> 24;
byte b = (byte) (a >> 24);
int c = b & 0xff;