русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Переполнение.


Дата добавления: 2014-05-03; просмотров: 1055; Нарушение авторских прав


 

Целочисленные операции Паскаля производят корректные результаты только тогда, когда операнды и результа этих операций находится в пределах [-MAXINT, MAXINT]. Для операции сложения, график показывает пунктиром область корректности результатов для X + Y.

 

 

 
 

 

 


За пределами границ обозначенных MAXINT, сложение не производит корректных результатов. Из графика видно, что для двух произвольно выбранных целых чисел в одном случае из четырех результат для целочисленных операций моежт оказаться некорректным – ¼ часть области ограниченной +/- MAXINT не производит корректные результаты.

Аналогично для корректных результатов операции X-Y показанных на следующем графике.

 

 

 


Снова здесь вероятность ¼ что произойдет переполнение с двумя произвольными целыми числами.

Поскольку умножение может произвести большие знаечния легче, чем сложение и вычитание, вероятность преполнения здесь выше. Область корректных результатов для операции X*Y представлена на графике ниже.

 

 
 

 


Границы области представлены гиперболами, график выполнен с искажением масштаба. На самом деле площадь области корректных результатов существенно меньше. В одном квадранте, площадь подкривой Y = MAXINT/X задается:

 

= MAXINT + MAXINT ln MAXINT – MAXINT ln 1

 

Таким образом, площадь подкривой будет MAXINT + MAXINT ln MAXINTб тогда как площадь области ограниченной операндами MAXINT2, поэтому в случае произвольного выбора операндов, переполнение не произойдет с вероятностью:

 

=

 

Для MAXINT = 216 = 65535, вероятность не переполнения в случае произвольного выбора операндов будет:

 

или менее 2 на 10000.

 

В противоположность сложению, вычитанию и умножению, DIV и MODне производят переполнения:



 

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

Реализация работы с MAXINT зависит от реализации Паскаль-машины. То, что значение MAXINT может быть определено опытным путем на каждой машине можно скорее отнести к недостаткам Паскаля.Поэтому для разработки стабильного кода нужно быть внимательным. На некоторых машина вычисления останавливаются при переполнении, поэтому его можно безопасно игнорировать, пока программа не начнет давать сбои. Однако на большистве машин результат просто не будет соотвествтвовать значению соотвествующей арифметической операции.

 



<== предыдущая лекция | следующая лекция ==>
Ввод-вывод целочисленных значений. | Преобразование символов в числа.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.059 сек.