首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NodeJS中unsigned short的位移运算符

问NodeJS中unsigned short的位移运算符
EN

Stack Overflow用户
提问于 2017-06-26 16:10:23
回答 3查看 914关注 0票数 1

我正尝试在nodeJS/javascript中对一个无符号整数执行Bitwise NOT。在我的理解中,每个按位运算符都是在有符号的32位整数上完成的,这让我在想要在无符号16位整数(短)上做这件事时感到困惑。这就是我想要做的:

代码语言:javascript
复制
c#
ushort value = 41003;
value = (ushort)~value;
//Value is now 24532 which is correct

nodeJS
var value = 41003;
value = ~value;
//value is now -41004 wich is NOT correct

如何在nodeJS/javascript中将最后一个值转换为无符号的16位int?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-06-26 16:31:28

您可以只执行逐位运算,并获得相同的结果:

代码语言:javascript
复制
value = ~value & 0xFFFF;
票数 2
EN

Stack Overflow用户

发布于 2017-06-26 16:31:34

您可以使用16位数字的最大值并执行bitwise XOR ^。

​

代码语言:javascript
复制
function not16Bit(v) {
    return ((1 << 16) - 1) ^  v;
}
 
console.log(not16Bit(41003)); // 24532
console.log(not16Bit(24532)); // 41003

​

票数 0
EN

Stack Overflow用户

发布于 2017-06-26 18:22:04

或者,您可以简单地使用Uint16Array

代码语言:javascript
复制
(new Uint16Array([~41003]))[0] //24532
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44755417

复制
相关文章

相似问题

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