Javascript按位重置值

Javascript按位重置值,javascript,Javascript,我有 我想在第2位存储0或1(false或true), 因此: 或 (我的值可能是某个复选框状态) 我的问题是,在将mydata设置为1后,我无法将其设置为零。 按位1 |=0是1 所以我需要一种方法将位设置为零。 有没有办法不用技巧就能使用它 clear方法迫使我们事先知道该值? 有什么帮助吗。非常感谢。您可以使用位AND运算符&: my_value=1; mydata |=bit2*myvalue; 或者只需将新值设置为: a &= 0; // a is 0 更一般地说,n从0开

我有

我想在第2位存储0或1(false或true), 因此:

(我的值可能是某个复选框状态)

我的问题是,在将mydata设置为1后,我无法将其设置为零。 按位1 |=0是1

所以我需要一种方法将位设置为零。 有没有办法不用技巧就能使用它

clear方法迫使我们事先知道该值?
有什么帮助吗。非常感谢。

您可以使用位AND运算符
&

my_value=1;
mydata |=bit2*myvalue;
或者只需将新值设置为:

a &= 0;
// a is 0

更一般地说,
n
从0开始表示最低有效位:

要设置位
n
使用
v |=(1
所以我需要一种方法将位设置为零。有没有什么方法可以不使用技巧就使用它

如果您知道该位设置为1,则始终可以
XOR
将其输出:

function bitset(n, value) {
    var mask = 1 << n;   // NB: no range check
    if (value) {
        return n | mask;
    } else {
        return n & ~mask;
    }
}
如果您不知道,则必须使用
作为位的补码:

mydata ^= bit2;

所以最后我们必须写代码…我想有人可以实现一个“重置”操作符。。。
a = 0;
// a is 0
v = (v & ~(1 << n)) | (value ? (1 << n) : 0);
function bitset(n, value) {
    var mask = 1 << n;   // NB: no range check
    if (value) {
        return n | mask;
    } else {
        return n & ~mask;
    }
}
mydata ^= bit2;
mydata &= (bit2 ^ -1)
mydata &= ~bit2