姜圣人吧 关注:8贴子:762
  • 6回复贴,共1

其实周卓不是2的64次方

只看楼主收藏回复

lz刚刚看了b站一个周卓刷十亿攻击的视频(很早就看过了,当时没细想),但是再翻倍到二十亿就go die了,这是为什么呢? 可以看 http://www.bilibili.com/video/av2849682/
答案是2147483647,当任何随从的生命值高于2147483647时,死亡=_=!
其实这很简单,随从设计的时候,生命值的数据类型是有符号位的32位数(int32 health)。
大小范围为 -2^31(-2 147 483 648) ~ 2^31-1(2 147 483 647)
视频中的周卓从十亿翻倍到二十亿时,具体数字简单计算为2147483648,正好超过了最大数字1点。
那么根据计算机二进制编码里面补码的规则,实际上2147483648会存储为一个负数(-2147483648..)。
所以程序就无情地根据这个负了二十多亿的生命值给周卓判了死刑~
应该是原创吧= =求点经验


IP属地:北京来自Android客户端1楼2016-01-17 22:40回复
    顶顶顶dingding#ingdinbg


    IP属地:北京来自Android客户端2楼2016-01-23 23:10
    回复
      @新人张666 @坑爹的小保球


      IP属地:北京来自Android客户端3楼2016-01-23 23:13
      回复
        666


        IP属地:北京来自iPhone客户端4楼2016-01-24 00:57
        回复
          。。。。。


          IP属地:北京来自Android客户端5楼2016-01-24 09:01
          回复
            水水水水更健康


            IP属地:北京来自Android客户端6楼2016-01-27 12:13
            回复
              shuishusishusishsuaj


              IP属地:北京来自Android客户端7楼2016-01-27 19:34
              回复