Javascript 放弃最后一点
给定值:0x9e9090ab(10011110100100001010000101011) 我想忽略第32位来解析该值,这样我就可以得到: 0x1e9090ab(00011101001000010010010101011) 我试图通过位掩码(0x9e9090ab&~0x10000000)执行此操作,但似乎不起作用,并导致有符号负数Javascript 放弃最后一点,javascript,bit-manipulation,Javascript,Bit Manipulation,给定值:0x9e9090ab(10011110100100001010000101011) 我想忽略第32位来解析该值,这样我就可以得到: 0x1e9090ab(00011101001000010010010101011) 我试图通过位掩码(0x9e9090ab&~0x10000000)执行此操作,但似乎不起作用,并导致有符号负数 我不确定我在这里做错了什么,所以任何帮助都将不胜感激 您需要使用位掩码~0x8000000而不是~0x10000000,因为0x10000000指的是第29位。例如:
我不确定我在这里做错了什么,所以任何帮助都将不胜感激 您需要使用位掩码
~0x8000000
而不是~0x10000000
,因为0x10000000
指的是第29位。例如:
var result = 0x9e9090ab & ~0x80000000;
对我来说,这样想更容易:
0x9e9090ab&0x7FFFFFFF
您可以使用以下节点进行比较:
> (0xFFFFFFFF).toString(2)
'11111111111111111111111111111111'
> (0x7FFFFFFF).toString(2)
'1111111111111111111111111111111'
我想我也可以很容易地(0x9e9090ab>1,但希望有人有更好的解决方案。它必须是0x8000000 et而不是0x10000000