Javascript两个补码
下面的python代码似乎可以很好地处理一个数字的两个补码: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中
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));
}