C# 位运算符与 JavaScript 位运算符

4

我不熟悉位运算符。我有这些代码:

var value= -2145643504;
value = (value << 1) | (value >> 27);
//result: -16

在C#和JavaScript中都会得到相同的结果-16,但是JavaScript中还有一个运算符>>>,而C#没有。JavaScript代码如下:

 var value= -2145643504;
 value = (value << 1) | (value >>> 27);
 //result: 3680304    //wanted result in C#

有没有用C#的解决方案?


3
可能是What is the C# equivalent of Java unsigned right shift operator >>>的重复问题,虽然这个问题特别针对Java,但JavaScript也适用。 - abc123
2
尝试:value = (value << 1) | (int)((uint)value >> 27); - Roman
2个回答

4

我正在将一种哈希机制从 JavaScript 转换到 C#,但是我对 C# 没有任何经验,这个工具帮了我很多!谢谢! - user7838288

1
            var value = -2145643504;
            value = (value << 1) | rightMove(value , 27);
            //value = 3680304

        int rightMove(int value, int pos)
        {
            if (pos != 0)
            {
                int mask = 0x7fffffff;
                value >>= 1;
                value &= mask;
                value >>= pos - 1;
            }
            return value;
        }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接