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

时间:2017-01-19 11:23:39

标签: c# bit-shift

我正在尝试将逻辑右移(>>>)(Difference between >>> and >>)的Java代码转换为C#

Java代码

 return hash >>> 24 ^ hash & 0xFFFFFF;

C#被标记为>>>,因为语法错误。

如何解决这个问题?

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

System.out.println("hash 1 !!! = " + (-986417464>>>24));

是197

但是

Console.WriteLine("hash 1 !!! = " + (-986417464 >> 24));

是-59

谢谢!

2 个答案:

答案 0 :(得分:9)

Java需要引入>>>,因为它的唯一无符号类型是char,其操作以整数形式完成。

另一方面,C#具有无符号类型,它们执行右移而没有符号扩展:

uint h = (uint)hash;
return h >> 24 ^ h & 0xFFFFFF;

答案 1 :(得分:-1)

对于C#,您只需使用>>

即可

请参阅:https://msdn.microsoft.com/nl-nl/library/xt18et0d.aspx