javascript - 为什么 js 按位取反 ~ 和其他语言的结果不一致
PHP中文网
PHP中文网 2017-04-11 13:10:22
[JavaScript讨论组]




上面三张图分别是 js、python、java 对 1475907359829 取反的结果,为什么只有 js 的结果是 1561389994?

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(3)
大家讲道理

js 把要取反的数先转成 32位有符号整数 ,最大有效范围: 2^32/2-1

a=Math.pow( 2,32)/2-1
2147483647
~a
-2147483648
~(a+1)
2147483647
迷茫

依稀记得,js在做位运算的时候会把数字截成32位的有符号数进行计算,也就是说超过2^32-1这个值的数字可能在位运算上会得到错误的结果

PHP中文网

js这个是int, 另外两个是long

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

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