首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >两个补充相同代码python / JavaScript的不同结果

两个补充相同代码python / JavaScript的不同结果
EN

Stack Overflow用户
提问于 2014-08-05 16:45:12
回答 2查看 157关注 0票数 0

在python2.7中,以下代码返回正确的结果(-18027917)

代码语言:javascript
运行
复制
from __future__ import print_function

def twos_comp(val, bits):
    if (val & (1 << (bits - 1))) != 0:
        val -= 1 << bits
     return val

valBinary = "110111011001110101001110011"
print(twos_comp(int(valBinary, 2), len(valBinary)))

在JavaScript (Node.js)中,以下代码返回不正确的结果(1995238003)

代码语言:javascript
运行
复制
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));

显然,位运算符(或int / parseInt)的行为有一些不同,但我还没有看到它是什么。

EN

Stack Overflow用户

发布于 2014-08-05 16:47:51

为什么这些线不匹配?

Python:

代码语言:javascript
运行
复制
    val -= 1 << bits

联署材料:

代码语言:javascript
运行
复制
    val -= (val - 1) << bits;
票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25144143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档