Bitjift运算符在NodeJS中的无符号短整型
我正在尝试在nodeJS / javascript中的无符号整数上执行Bitwise NOT
操作。 在我的理解中,每个按位运算符都是在一个有符号的32位整数上完成的,当我想在一个无符号的16位整数(简称)上进行操作时,这会使我感到困惑。 这是我想要做的:
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位整数?
你可以做一个按位与得到相同的结果:
value = ~value & 0xFFFF;
您可以使用16位数字的最大值并执行按位异或操作 。
function not16Bit(v) { return ((1 << 16) - 1) ^ v; } console.log(not16Bit(41003)); // 24532 console.log(not16Bit(24532)); // 41003
或者你可以简单地使用Uint16Array
(new Uint16Array([~41003]))[0] //24532