已掉线,重新登录

首页 > 绿虎论坛 > 历史版块 > 编程 > PHP > 源码

看这贴的点击量,我倒


『回复列表(25|隐藏机器人聊天)』

21. ❌❌⭕⭕
❌❌⭕⭕
(/@Ta/2013-07-13 07:52//)

22. @XFLCER,因为老虎可能用的int类型变量保存的,在C语言里,当数值达到最大值(21亿多)时,再加1,就会变成最小值(-21…),这样。
(/@Ta/2013-07-13 10:15//)

23. @春风沉醉的晚上,我不认为的网络任务这么强
(/@Ta/2013-07-13 10:21//)

24.
用户被禁言,发言自动屏蔽。
(/@Ta/2013-07-13 12:57//
被禁言
)

25. @春风沉醉的晚上@XFLCER@Cute寂寥,我确定是我亲手把它改成了2147483647,变负数和我无关(虽然我明明是故意的)。
(/@Ta/2013-07-15 07:07//)

26. @XFLCER,我来更详细地解释一下正数变负数的原理:
在32位系统中,数字是用32位二进制表示的,也就是4个字节。然而如果用全部32位去表示数,那么我们就无法表示负数,只能表示正数和0,这样我们就得到一个无符号整数。
而为了表示负数,我们人为规定了整数的最高位(第32位)是符号位,当它为0是表示正数,为1时表示负数。
然而在标准加法运算中,一个31位全满的数(2147483647)加1也可以让第32位变成1,于是当整数转字符串函数解析这个整数时,它变成负数(-2147483648)了,于是我们说,这个整数在加1过程中发生了符号位溢出——本来是数的部分跑到符号位去了,导致数被误读了。


不过mysql似乎有保护机制,我刚刚试了试改成2147483647,发现之后即使再刷新,阅读记录也不会继续上涨了。其实我之前确实是直接改成了负数。
(/@Ta/2013-07-15 07:09//)

上一页 2/2页,共25楼

回复需要登录

9月12日 21:34 星期五

本站由hu60wap6驱动

备案号: 京ICP备18041936号-1