Javascript按位重置值
我有 我想在第2位存储0或1(false或true), 因此: 或 (我的值可能是某个复选框状态) 我的问题是,在将mydata设置为1后,我无法将其设置为零。 按位1 |=0是1 所以我需要一种方法将位设置为零。 有没有办法不用技巧就能使用它 clear方法迫使我们事先知道该值?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开
有什么帮助吗。非常感谢。您可以使用位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