Javascript 按位重置值

标签 javascript

我有

bit1 =1
bit2 =2
bit3 =4 
etc...

我想在第2位存储0或1(假或真), 所以:

my_value=0;
mydata |=bit2*myvalue;

my_value=1;
mydata |=bit2*myvalue;

(my_value 可以是某个复选框状态)

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

所以我需要一种方法将位设置为零。 有没有什么方法可以不用技巧就能做到这一点?

clear方法迫使我们事先知道值? 任何帮助w。值得赞赏。

最佳答案

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

设置n使用v |= (1 << n)

清除n使用v &= ~(1 << n)

切换n使用v ^= (1 << n)

如果您确实希望单行代码将特定位设置为 truefalse (其中所需的值保存在变量中)使用:

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;
    }
}

关于Javascript 按位重置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26917182/

相关文章:

javascript - 使用 URL 的简单页面重定向

javascript - 如何使用 knockout 可观察变量删除 html 内部的 Html 元素

javascript - 在 Typescript 中,你如何区分 Node 和 vanilla Javascript 错误类型?

javascript - 在 MongoDB 中获取查询外的数据

javascript - 我如何在 Safari 10+ 中使用 BroadcastChannel API 或类似的东西?

javascript - 现场 Javascript 不适用于 Electron,但适用于其他任何地方

javascript - react setInterval 和 useState

javascript - 如何在 Markdown 中拥有可折叠的标题?

javascript - jQuery 选择器的速度似乎是错误的我的代码

JavaScript:将长日期解析为较短的日期