在Javascript中,如果对十进制整数10执行按位不操作的操作:
~10我期望它按位计算,而不是在二进制整数上计算,如下所示:
~1010 = 0101换句话说,我期望十进制整数5。相反,这个运算给我-11。(在您的控制台中尝试)
~10 = -11如果我通过将-11和~10看作二进制整数字符串来更显式地检查这一点,那么:
parseInt(~10,10).toString(2)
"-1011"
parseInt(-11,10).toString(2)
"-1011"一致的。但我不明白。有人能解释一下为什么吗?我猜这和标志有关。
编辑:我发现了这个问题发布后,它也帮助我更好地理解这一现象。
发布于 2014-08-01 00:16:29
Javascript中的按位运算符将这个数字处理为32位。所以10是
00000000 00000000 00000000 00001010当你倒置它的时候,结果是:
11111111 11111111 11111111 11110101当解释为32位有符号的数字时,是-11 (如果你不明白为什么,可以在二补上阅读维基百科的条目)。
https://stackoverflow.com/questions/25070962
复制相似问题