给定值:0x9e9090ab(10011110100100001001000010101011)
我想解析忽略第32位的值,这样我最终得到: 0x1e9090ab(00011110100100001001000010101011)
我尝试通过位掩码(0x9e9090ab& ~0x10000000)执行此操作似乎不起作用并导致带符号的负数。
不确定我在这里做错了什么,所以任何帮助都将不胜感激。
答案 0 :(得分:1)
您需要使用位掩码~0x80000000
而不是~0x10000000
,因为0x10000000
指的是第29位。例如:
var result = 0x9e9090ab & ~0x80000000;
答案 1 :(得分:0)
对我而言,考虑这种方式更容易:
0x9e9090ab & 0x7FFFFFFF
您可以使用节点进行比较:
> (0xFFFFFFFF).toString(2)
'11111111111111111111111111111111'
> (0x7FFFFFFF).toString(2)
'1111111111111111111111111111111'