相关疑难解决方法(0)

System.out.println(16 >>> 3)?

我试试代码

System.out.println( 16 >>> 3);

输出是2!

但这是如何工作的?语法是什么?

java jvm

1
推荐指数
1
解决办法
4984
查看次数

Java是否忽略了MSB上的按位运算?

我目前在java中有一个奇怪的功能,我试图规避.如果我将一个字节定义为0x80并且我向右移位1位置,则java将输出0xC0,而不是0x40.有人知道为什么吗?

此外,如果我输入0x70,并向右移1位置,它将正确输出0x38.

我也注意到这种行为也是短路和冲击.当MSB被设置时,MSB将无论如何都保持设置,并且当该值被转换为更大的值(ala int)时,"新"空间将被设置位填充.

基本上我要问的是这种行为是否正确?

java

1
推荐指数
1
解决办法
47
查看次数

>> =和>>> =之间的区别

我想弄清楚>> =和>>> =之间的区别.我明白他们做了什么,但我不明白其中的区别.以下输出为38 152 38 152.逐位赋值>>> =似乎与>> =完全相同.

public static void main(String[] args)
{
    int c = 153;
    System.out.print((c >>= 2));
    System.out.print((c <<= 2));
    System.out.print((c >>>= 2));
    System.out.print((c <<= 2));
}
Run Code Online (Sandbox Code Playgroud)

java

1
推荐指数
1
解决办法
127
查看次数

什么>>>在java中意味着什么

我很难理解>>>java中的bitwise运算符.

 int a = 60;
 int c = 0;
 c = a >>> 2;
 System.out.println("a >>> 2 = " + c );
Run Code Online (Sandbox Code Playgroud)

结果是15

但它怎么变成15?

java

0
推荐指数
1
解决办法
95
查看次数

什么是C#逻辑右移的代码?

我试图将逻辑右移(>>>)(>>>和>>之间的差异)转换为C#的Java代码

Java代码是

 return hash >>> 24 ^ hash & 0xFFFFFF;
Run Code Online (Sandbox Code Playgroud)

C#被标记>>>为语法错误.

如何解决?

更新1 人们建议>>在C#中使用,但它没有解决问题.

System.out.println("hash 1 !!! = " + (-986417464>>>24));
Run Code Online (Sandbox Code Playgroud)

是197年

Console.WriteLine("hash 1 !!! = " + (-986417464 >> 24));
Run Code Online (Sandbox Code Playgroud)

是-59

谢谢!

c# bit-shift

0
推荐指数
1
解决办法
1578
查看次数

标签 统计

java ×4

bit-shift ×1

c# ×1

jvm ×1