Пусть меня поправят, если кто знающий всплывет . :-) Суть явления пере...
X3 Terran Conflict / X3 Земной конфликт
 
X3 Terran conflict  
 

На сайте онлайн (человек): 72



 



Пусть меня поправят, если кто знающий всплывет . :-) Суть явления пере...

Terran Conflict (X3TC) / Форум / Курилка / ТрактирЪ "День дурака"

ТрактирЪ "День дурака"
(http://x3tc.net/x3_forum/?tid=1854)
Автор: eliseeff
(07.05.2020 18:05:34)

 pusher писал(а):
Пусть меня поправят, если кто знающий "всплывет".
 

Суть явления переполнения счетчика в том, что любой счетчик (или регистр - это неважно) имеет свою разрядность. Этой разрядностью определяется максимальное число, которое данный счетчик или регистр может хранить/обрабатывать.

Доступный пример: счетчик километража в спидометре твоего пепелаца. Если в нем 6 разрядов (перед запятой), то его максимальное значение - 999 999 км. Дальше он переполнится. Максимальное значение легко подсчитать по формуле:

max = xn - 1, где x - основание системы счисления, а n - кол-во разрядов счетчика (разрядность)

Счетчик у тебя десятичный, кол-во разрядов - 6. Получаем:

max = 106 - 1 = 999 999

То же самое происходит с компьютерными переменными, которые тоже имеют разрядность. Только там используется двоичная система счисления. Байт - это 8 бит. Т.е. 8 двоичных разрядов. И если переменная у нас целочисленная четырехбайтная, то для хранения значения числа у нас имеется 4 х 8 = 32 разряда (бита).

По приведенной выше формуле мы можем легко вычислить, что в такой переменной мы сможем хранить числа со значением не выше 232 - 1 = 4 294 967 295

Что это значит? А то, что если расстояния между объектами вычислять в миллиметрах, то при расстоянии между объектами 4 294 967 295 мм (что составляет чуточку менее 4 295 км) - наш результат перестанет влезать в 4 байта.

Переполнение счетчика - это достаточно широкое понятие, означающее нехватку разрядности для корректного произведения каких-либо вычислений на некоем этапе. Между прочим, пресловутая "проблема 2000", от которой в конце прошлого века обильно какало кирпичами человечество - тоже проблема переполнения счетчика.

Кстати, у искусственного ограничения счета игрока в старых иксах двумя миллиардами ноги растут тоже из борьбы с переполнением счетчика. Дело в том, что четырехбайтные переменные тоже бывают разные. В некоторых случаях один из битов отводится для знака числа. Тогда такая переменная сможет хранить значения от -2 147 483 647 до +2 147 483 647. Вот и обрезали "до круглого".

Ну а Дине в свете вышесказанного могу только поаплодировать. Думаю, если ему доведется когда-нибудь услышать про эффект утенка, он немедленно бросится искать утенка. :lol:

 pusher писал(а):
P.S. eliseeff, между прочим, хоть и не тонет, но и его тоже временами уносит куда-то дней на двадцать так.
 

То, что не тонет, прекрасно уносится по трубам простым нажатием кнопки.

дерево темы → ТрактирЪ "День дурака" ТрактирЪ "День дурака" »
Список игр