javascript - 在javascript中反转无符号的任意二进制位

标签 javascript

例如,10100 将反转为 01011; 010 将反转为 101; 101 将转换为 010。

问题是当我使用 ~5 时,它变成了 -6,因为 js 使用 32 位签名。

如何反转无符号任意位二进制数?

我想创建一个函数,接受这个无符号的任意位二进制数并返回它的倒置形式(101->010)

我想从字符串 101 转换为 010

最佳答案

你可以创建一个像这样翻转所需位数的函数

    var flipbits = function (v, digits) {
        return ~v & (Math.pow(2, digits) - 1);
    }
    console.log(flipbits(5, 3)); // outputs 2
    console.log(flipbits(2, 3)); // outputs 5

注意——这不是“任意位数”……最多是 32

working with strings, you can have arbitrary bit length (this one wont work without transpiling in Internet Exploder)

    var flipbits = str => str.split('').map(b => (1 - b).toString()).join('');

    console.log(flipbits('010')); // outputs 101
    console.log(flipbits('101')); // outputs 010

The above in ES5

    var flipbits = function flipbits(str) {
      return str.split('').map(function (b) {
        return (1 - b).toString();
      }).join('');
    };

    console.log(flipbits('010')); // outputs 101
    console.log(flipbits('101')); // outputs 010

关于javascript - 在javascript中反转无符号的任意二进制位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42450510/

相关文章:

javascript - Angular2 ng2-图表自定义?

javascript - Jquery 在变量中切换元素

javascript - 在其他类之间共享两个实例

javascript - 在有一些限制的情况下使用 Javascript 的正则表达式匹配整个单词

javascript - 这个 reducer 是否符合 Redux 规则?

php - 通过 Javascript 传递变量

javascript - 从 Jstree 禁用某些复选框

javascript - 从解构数组创建对象的片段

javascript - 在引导弹出窗口中添加此共享按钮

javascript - D3 对象全部渲染为 0px x 0px,没有属性