JavaScript的二进制补码
下面的Python代码似乎能很好地计算一个数字的二进制补码:
def twos_comp(self, val, bits):
if (val & (1 << (bits - 1))) != 0:
val -= 1 << bits
return val
它的用法是 num = self.twos_comp(int(binStr, 2), len(binStr))
,其中binStr是一个包含任意长度二进制数字的字符串。
我需要在JavaScript(用于node.js)中做完全相同的事情。我今天一直在为此苦苦挣扎,快要崩溃了。显然,二进制和位运算对我来说不是强项。
有没有人能帮帮我,这样我就可以继续做一些更有意义的事情了 :-)
1 个回答
0
在编程中,很多时候我们需要处理一些数据,比如从一个地方获取数据,然后在程序中使用这些数据。这个过程有时候会涉及到网络请求,也就是让程序去网上找信息。
当我们发送请求去获取数据时,可能会遇到一些问题,比如网络不稳定、服务器出错等等。这些问题会导致我们无法顺利获取到想要的数据。
为了应对这些情况,我们可以使用一些技巧,比如设置超时时间。超时时间就是如果在规定的时间内没有得到回应,程序就会停止等待,这样就不会一直卡在那儿。
另外,我们还可以使用错误处理机制来捕捉这些问题。这样一来,即使出现了错误,程序也不会崩溃,而是可以给出一个友好的提示,告诉用户发生了什么事情。
总之,处理数据时要考虑到各种可能出现的问题,并做好相应的准备,这样才能让程序更加稳定和可靠。
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));
}