Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript两个补码_Javascript_Python_Math_Binary - Fatal编程技术网

Javascript两个补码

Javascript两个补码,javascript,python,math,binary,Javascript,Python,Math,Binary,下面的python代码似乎可以很好地处理一个数字的两个补码: def twos_comp(self, val, bits): if (val & (1 << (bits - 1))) != 0: val -= 1 << bits return val 它用作num=self.twos_compintbinStr,2,lenbinStr 其中,binStr是包含任意长度二进制数的字符串 我需要在node.js的javascript中

下面的python代码似乎可以很好地处理一个数字的两个补码:

def twos_comp(self, val, bits):
    if (val & (1 << (bits - 1))) != 0:
        val -= 1 << bits
    return val
它用作num=self.twos_compintbinStr,2,lenbinStr 其中,binStr是包含任意长度二进制数的字符串

我需要在node.js的javascript中执行完全相同的操作。我一整天都在与之抗争,准备从人类中辞职。显然,二进制/位数学不是我的强项


请有人帮忙,这样我就可以继续更高效地浪费时间了:-

什么代码让您最接近解决方案,您能将它包含在这里,这样我们就不必从头开始编写了吗谢谢George,我将尝试一下并向您汇报George-numberBytes的用途是设置最大期望值的可能位数吗?通过指定numberBytes,您可以用所需的字节数表示数字。e、 g.如果通过4,则数字将以32位表示。
function toTwosComplement(integer, numberBytes, dontCheckRange) {   
    // @integer - > the integer to convert
    // @numberBytes -> the number of bytes representing the number (defaults to 1 if not specified)

    var numberBits = (numberBytes || 1) * 8;

    // make sure its in range given the number of bits
    if (!dontCheckRange && (integer < (-(1 << (numberBits - 1))) || integer > ((1 << (numberBits - 1)) - 1))) 
        throw "Integer out of range given " + numberBytes + " byte(s) to represent.";

    // if positive, return the positive value
    if (integer >= 0)
        return integer;

    // if negative, convert to twos complement representation
    return ~(((-integer) - 1) | ~((1 << numberBits) - 1));
}