Aman920_ 2017-07-30 02:33 采纳率: 66.7%
浏览 3092
已采纳

js中移位0位是什么操作,为什么值就变了

图片说明
图片中是在浏览器控制台下测试的,为什么有的移位0位值变了,有的却没有呢

  • 写回答

2条回答 默认 最新

  • lzl_Avery 2017-07-30 06:06
    关注

    来我来给你解释吧,js中变量定义是var吧? 所以当一个数比较大的时候它直接认为是长整型或者其它类型

    所在 Math.pow(2,31)是整型结果是正整数也就是你的那个结果, 但是当它作位移运算的时候转为了int类型
    int类型4个字节32位,从-2的31次方到2的31次方-1这个范围, 而正整数 2的31次方刚好是超过2的31次方-1
    ,而我们知道 数据在计算机中是以补码存放的 最高位的1 0 表示正负,1表负,2的31次变为有符好的整型
    高位为刚好为1 所以就成负数了, 而2的32次方刚好是10000....000 32个0 刚好进位转为int的时候刚好
    最高位33位的1溢出了所以结果为0 而长整型就没有这个问题。。 在如在c语言中也有相同的例子
    如char在c语言中1个字节8位 最大表示范围0-255 你若 char a=128 整型输出为负数 是一个道理

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源
  • ¥15 安卓JNI项目使用lua上的问题
  • ¥20 RL+GNN解决人员排班问题时梯度消失
  • ¥60 要数控稳压电源测试数据
  • ¥15 能帮我写下这个编程吗
  • ¥15 ikuai客户端l2tp协议链接报终止15信号和无法将p.p.p6转换为我的l2tp线路