我不熟悉按位运算符。我有这样的代码:
var value= -2145643504;
value = (value << 1) | (value >> 27);
//result: -16C#和JavaScript的结果是相同的-16,但是在JavaScript中还有一个C#没有的操作符>>>。JavaScript中的代码:
var value= -2145643504;
value = (value << 1) | (value >>> 27);
//result: 3680304 //wanted result in C#在C#中有什么解决方案吗?
发布于 2017-01-28 07:58:11
在JavaScript中,您正在使用>>>执行无符号右移位分配。
int x = -100;
int y = (int)((uint)x >> 2);
Console.WriteLine(y);发布于 2017-01-28 08:06:37
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;
}https://stackoverflow.com/questions/41907549
复制相似问题