Ответ 1
Предположим, у вас было 8-битное беззнаковое число.
Ниже представлен выбор цифровых и двоичных представлений:
1: 00000001
2: 00000010
15: 00001111
255: 11111111
Если у вас есть 255 и добавить 1, что произойдет? Там больше нет бит, поэтому он обтекает до
0: 00000000
Здесь демонстрация в С# с использованием uint (32-разрядное целое без знака)
using System;
public class Program
{
public static void Main()
{
uint n = 4294967294;
for(int i = 0; i < 4; ++i)
{
n = n + 1;
Console.WriteLine("n = {0}", n);
}
}
}
Это выведет:
n = 4294967294
n = 4294967295
n = 0
n = 1
Это проблема, которую вы не получаете в javascript.
У вас разные проблемы.
Например:
var n = 9007199254740991;
var m = n + 1;
var p = m + 1;
alert('n = ' + n + ' and m = ' + m + ' and p = ' + p);