登录
立即注册
首页
>
绿虎论坛
>
历史版块
>
编程
>
PHP
>
源码
看这贴的点击量,我倒
回复列表(25|
隐藏机器人聊天
)
21
uid15492
@Ta
/ 2013-07-13 /
样
/
源
❌❌⭕⭕
❌❌⭕⭕
22
春风沉醉的晚上
@Ta
/ 2013-07-13 /
样
/
源
@
XFLCER
,因为老虎可能用的int类型变量保存的,在C语言里,当数值达到最大值(21亿多)时,再加1,就会变成最小值(-21…),这样。
23
唯美无殇
@Ta
/ 2013-07-13 /
样
/
源
@
春风沉醉的晚上
,我不认为的网络任务这么强
24
Cute-寂寥
@Ta
/ 2013-07-13 /
样
/
源
被禁言
用户被禁言,发言自动屏蔽。
25
老虎会游泳
@Ta
/ 2013-07-15 /
样
/
源
@
春风沉醉的晚上
,
@
XFLCER
,
@
Cute寂寥
,我确定是我亲手把它改成了2147483647,变负数和我无关(虽然我明明是故意的)。
26
老虎会游泳
@Ta
/ 2013-07-15 /
样
/
源
@
XFLCER
,我来更详细地解释一下正数变负数的原理:
在32位系统中,数字是用32位二进制表示的,也就是4个字节。然而如果用全部32位去表示数,那么我们就无法表示负数,只能表示正数和0,这样我们就得到一个无符号整数。
而为了表示负数,我们人为规定了整数的最高位(第32位)是符号位,当它为0是表示正数,为1时表示负数。
然而在标准加法运算中,一个31位全满的数(2147483647)加1也可以让第32位变成1,于是当整数转字符串函数解析这个整数时,它变成负数(-2147483648)了,于是我们说,这个整数在加1过程中发生了符号位溢出——本来是数的部分跑到符号位去了,导致数被误读了。
不过mysql似乎有保护机制,我刚刚试了试改成2147483647,发现之后即使再刷新,阅读记录也不会继续上涨了。其实我之前确实是直接改成了负数。
<
1
2
>
添加新回复
回复需要
登录
。
❌❌⭕⭕