gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 11:41:35 25 4
gpt4 key购买 nike

例如,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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com