我正在尝试获取二进制的有符号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);
}
}
输入:['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]