javascript - js 数字运算比位运算快?为什么?
ringa_lee
ringa_lee 2017-04-10 15:46:21
[JavaScript讨论组]
var reverseBits = function(n) {
    var num = 0;
    for(var j=31;j>=0;j--){
        num += n%2*Math.pow(2,j);
        n = parseInt(n/2);
    }
    return num;
};
    var reverseBits = function(n) {
        var num=0;
        for(var j=31;j>=0;j--,n>>1)
            if(n&1){
                num += Math.pow(2,j);
            }
        return num;
    };
ringa_lee
ringa_lee

ringa_lee

全部回复(2)
PHP中文网

为什么要?parseInt,Math.floor 更好

在js里所有的数是64位浮点数,对于位操作 op ,x op y 都会对 x y先执行 toUint32/toInt32操作,如果op是位移操作,还要 y = y modulo 32 所以在js里面位操作比较慢也是很正常的。
标准里 << 定义

PHPz

猜测n=parseInt(n/2)会被优化成n>>1这个应该没区别。而n%2与if(n&1),后者需要做类型转换,可能是比前者慢。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号