首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C#位运算符与Javascript位运算符

C#位运算符与Javascript位运算符
EN

Stack Overflow用户
提问于 2017-01-28 07:51:31
回答 2查看 1.1K关注 0票数 4

我不熟悉按位运算符。我有这样的代码:

代码语言:javascript
运行
复制
var value= -2145643504;
value = (value << 1) | (value >> 27);
//result: -16

C#和JavaScript的结果是相同的-16,但是在JavaScript中还有一个C#没有的操作符>>>。JavaScript中的代码:

代码语言:javascript
运行
复制
 var value= -2145643504;
 value = (value << 1) | (value >>> 27);
 //result: 3680304    //wanted result in C#

在C#中有什么解决方案吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-28 07:58:11

在JavaScript中,您正在使用>>>执行无符号右移位分配

但你必须先投出整数。

代码语言:javascript
运行
复制
int x = -100;
int y = (int)((uint)x >> 2);
Console.WriteLine(y);
票数 4
EN

Stack Overflow用户

发布于 2017-01-28 08:06:37

代码语言:javascript
运行
复制
            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;
        }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41907549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档