如何在Javascript中清除特定位位置以上的所有位
我对Javascript有一点操作问题 我有一个数字需要清除一些高位。需要清除的确切位是通过编程确定的,经过一些计算,我有两条信息,一个位位置和一个特定位位置的掩码。我要做的是清除我的值中该位位置(不包括该位)上方的所有位 因此,如果我的值为:如何在Javascript中清除特定位位置以上的所有位,javascript,node.js,Javascript,Node.js,我对Javascript有一点操作问题 我有一个数字需要清除一些高位。需要清除的确切位是通过编程确定的,经过一些计算,我有两条信息,一个位位置和一个特定位位置的掩码。我要做的是清除我的值中该位位置(不包括该位)上方的所有位 因此,如果我的值为: 0b11111111 并且,计算得出位位置3和该位位置的掩码: 0b00000100 我想屏蔽或清除我的值中位位置3上方的位,并最终得到: 0b00000111 作为提醒,我想在上面清除的位位置是通过编程确定的,可以是任何位位置,所以我不能只
0b11111111
并且,计算得出位位置3和该位位置的掩码:
0b00000100
我想屏蔽或清除我的值中位位置3上方的位,并最终得到:
0b00000111
作为提醒,我想在上面清除的位位置是通过编程确定的,可以是任何位位置,所以我不能只编写预定义的掩码。我该怎么做?编程环境是node.js中的Javascript
value & ((mask << 1) - 1)
逻辑基本相同,但当乘法在52位尾数上执行时,您会得到多一位。非常好。它起作用了。忘记了-1选项。我很清楚bit的局限性。我每值使用31位。太好了。最后一句是关于未来的“复制和粘贴者”嗯,看起来我必须确保并且不要对第31位运行它(在这种情况下实际上没有什么需要清除的),因为我认为
掩码是正确的,如果JS会做整数减法,它会工作,但是当-1
在64位浮点上执行时,这不会工作。不确定处理边缘情况是否比以另一种方式构建掩码更简单。等等,mask*2-1
?
value & (mask * 2 - 1)