我刚才和蓝色的聊天,突然对于游戏币过多后会变成负数有了兴趣,于是就用计算器在二进制和十进制之间转换,计算结果如下。(开始比较笨)
20亿 1110111001101011001010000000000
20亿-1 1110111001101011001001111111111
21亿 1111101001010110111010100000000
22亿 10000011001000010101011000000000 注意此时位数发生了变化
21.5亿 10000000001001100110010110000000
21.2亿 1111110010111001010001000000000
21.3亿 1111110111101010011100010000000
21.4亿 1111111100011011100111100000000
21.45亿 1111111110110100001101001000000
21.48亿 10000000000001111110000100000000
21.46亿 1111111111010010101110010000000
21.47亿 1111111111110001001111011000000
21.475亿 10000000000000000011111111100000
也就是说,在21.47亿到21.475亿之间,二进制的位数发生了变化,所以,变成负数的游戏币就是在这个区间内。
后来又想了个简单些的方法:
数数20亿一共是31位,于是我就把31个1组成的二进制用计算器转换成十进制,也就是
2147483647
超过这个数,游戏币就变成负数啦。
为什么呢?我对于内存不是很懂,我想大概是游戏中用32位二进制数字来储存游戏币的内容,好像是大学时学过,第一位如果是1,则表示负数。对于31位的二进制数字,其第一位是0,转换成十进制就是正数。如果大于我上面写的这个数字,第一位就变成了1,于是就成了负数啦。
我想这大概可以解释有位网友的游戏币变成负数的现象啦。
我不是学计算机专业的,说的可能不准确,欢迎拍砖。
谢谢捧场!!!