根据我的经验,php代码和javascript可以非常便携,但今天我发现了这个:
$secret1 = 8992483;
$secret2 = 1785665;
$counter = 3288985389;
for ($i=0; $i<10000000; $i++) {
$counter = ($counter * $secret1) % $secret2;
}
console.log($counter);
在chrome / nodejs中执行时,我得到652751,但在其他语言中,如PHP甚至C,它应该是:1281709
我做错了什么? :S
由于
编辑:为避免达到max int,您可以使用大整数
var bigInt = require("big-integer");
$secret1 = 8992483;
$secret2 = 1785665;
$counter = bigInt(3288985389);
for ($i=0; $i<10000000; $i++) {
$counter = $counter.multiply($secret1).mod($secret2);
}
console.log($counter);
答案 0 :(得分:2)
这取决于语言如何处理整数和整数溢出
例如,在某些语言中,当你有max_int + 1 == min_int
时这是因为最大整数以这种方式编码:011111111 ...
因此,当你加1时,得到:100000000 ......这是最小整数