Javascript 从二进制';s签署2';补语
我试图得到二进制的有符号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')
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]