Two补充了相同的代码python/JavaScript不同的结果
在python 2.7中,以下代码返回正确的结果(-18027917)Two补充了相同的代码python/JavaScript不同的结果,javascript,python,node.js,Javascript,Python,Node.js,在python 2.7中,以下代码返回正确的结果(-18027917) from\uuuuu future\uuuuu导入打印功能 def两个组件(val,位): 如果(val&(1为什么这些线不匹配 Python: val -= 1 << bits val-=1首先 val-=(val-1)如果直接传递val和位的正确值,结果会发生变化吗?这将排除parseInt作为原因,让totwoscompletion。谢谢迈克(和卡尔).我一定是在某个时候弄乱了内疚的界限,但经过修
from\uuuuu future\uuuuu导入打印功能
def两个组件(val,位):
如果(val&(1为什么这些线不匹配
Python:
val -= 1 << bits
val-=1首先
val-=(val-1)如果直接传递val
和位的正确值,结果会发生变化吗?这将排除parseInt
作为原因,让totwoscompletion
。谢谢迈克(和卡尔).我一定是在某个时候弄乱了内疚的界限,但经过修复,javascript版本现在似乎可以工作了。我接受了Mike的回答,因为它提供了重要的额外信息,但却对Carls进行了升级,因为它也是正确的。你们两个都是冠军!
function toTwosComplement(val, bits) {
if ((val & (1 << (bits - 1))) != 0) {
val -= (val - 1) << bits;
}
return val;
}
valBinary = "110111011001110101001110011"; // same as python example
console.log(toTwosComplement(parseInt(valBinary, 2), valBinary.length));
val -= 1 << bits
val -= (val - 1) << bits;
val -= (val - 1) << bits;
val -= 1 << bits