Javascript 从二进制';s签署2';补语

Javascript 从二进制';s签署2';补语,javascript,arrays,node.js,binary,buffer,Javascript,Arrays,Node.js,Binary,Buffer,我试图得到二进制的有符号2的补码的十进制数,如果它同样可用 以下是我如何努力做到这一点 function getSignedInteger(bits) { for (var i = 0; i < bits.length; i++) { bits[i] } let negative = (bits[0] === '1'); console.log(bits[0] === '1')

我试图得到二进制的有符号2的补码的十进制数,如果它同样可用

以下是我如何努力做到这一点

    function getSignedInteger(bits) {
        for (var i = 0; i < bits.length; i++) {
            bits[i]
        }
        let negative = (bits[0] === '1');
        console.log(bits[0] === '1')
        if (negative) {
            let inverse = '';
            for (let i = 0; i < bits.length; i++) {
                inverse += (bits[i] === '0' ? '1' : '0');
            }
            console.log(inverse)
            return (parseInt(inverse, 2) + 1) * -1;
        } else {
            return parseInt(bits, 2);
        }
    }
函数getSignedInteger(位){
对于(变量i=0;i
输入:['10100100'、'11100001'、'11001'、'100000'、'100001'、'101010'、'1000111'、'11011000'、'1010011'、'1011000'、'10111011'、'10000110'、'10111010'、'1110101'、'1111'、'110111']

输出: [92、-31、25、32、33、42、71、-40、83、88、-69、-122、-70、117、15、55]

我到底得到了什么
[-92,-31,-7,-32,-31,-22,-57,-40,-45,-40,-69,-122,-70,-11,-1,-9]

您可以添加一个值检查,它在第一位有符号位,然后

  • 解析值与256的增量,或
  • 解析后的数字
函数getSignedInteger(位){
var值=parseInt(位,2);

返回值&(1)你有一些例子吗?@NinaScholz是的,作为输入,我提供如下:
['10100100'、'11100001'、'11001'、'100000'、'100001'、'101010'、'1000111'、'11011000'、'1010011'、'1011000'、'10111011'、'10000110'、'10111010'、'1110101'、'1111'、'110111']我试图得到的输出是:[92,-31,25,32,33,42,71,-40,83,88,-69,-122,-70,117,15,55]我得到的是:[92,-31,-7,-32,-31,-22,-57,-40,-45,-40,-69,-122,-70,-11,-1,-9]