丢掉最后一点

时间:2017-06-17 14:30:03

标签: javascript bit-manipulation

给定值:0x9e9090ab(10011110100100001001000010101011)

我想解析忽略第32位的值,这样我最终得到: 0x1e9090ab(00011110100100001001000010101011)

我尝试通过位掩码(0x9e9090ab& ~0x10000000)执行此操作似乎不起作用并导致带符号的负数。

不确定我在这里做错了什么,所以任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:1)

您需要使用位掩码~0x80000000而不是~0x10000000,因为0x10000000指的是第29位。例如:

var result = 0x9e9090ab & ~0x80000000;

答案 1 :(得分:0)

对我而言,考虑这种方式更容易:

0x9e9090ab & 0x7FFFFFFF

您可以使用节点进行比较:

> (0xFFFFFFFF).toString(2)
'11111111111111111111111111111111'
> (0x7FFFFFFF).toString(2)
'1111111111111111111111111111111'