Что такое алгоритм: различия между версиями

Содержимое удалено Содержимое добавлено
Нет описания правки
Нет описания правки
Строка 110:
При изучении языка программирования, вы встретитесь с таким явлением, как ''переполнение'' — ситуация, когда результат элементарной арифметической операции выходит за пределы подмножества чисел, которые можно записать в выбранном машинном представлении.
 
Итак, для компьютеров лишь некоторые действительные числа являются элементарными объектами{{ref|cons4}}Множество этих чисел конечно. Какие именно действительные числа элементарны, зависит от используемого машинного представления. Многие современные процессоры поддерживают несколько типов машинного представления действительных чисел. Целые числа практически везде представляются одинаковым образом. В процессорах с 32-битной арихтектуройархитектурой большая часть команд связана с числами, записанными в 32 битах. При представлении неотрицательных чисел в 32 бита помещается просто двоичная запись. Множество представимых таким образом чисел — это все неотрицательные числа меньше <math>2^{32}</math>. Этому машинному представлению в языке Си соответствует тип данных <code>unsigned int</code>. Если мы попытаемся сложить с помощью команды процессора два числа типа <code>unsigned int</code>, сумма которых больше либо равна <math>2^{32}</math>, то возникнет переполнение — старший 33-й бит результата будет утерян.
 
При представлении отрицательных чисел в виде 32 бит один бит необходимо выделить под знак — «плюс» или «минус». Неотрицательные числа, меньшие <math>2^{31}</math>, записываются обычным образом в виде двоичной записи. Старший бит у них равен нулю. Отрицательное число <math>-a</math>, модуль <math>a</math> которого меньше либо равен <math>2^{31}</math>, записывается в 32 битах как двоичная запись числа <math>2^{32}-a</math>. Старший бит для отрицательных чисел равен 1. Этому машинному представлению соответствует тип <code>int</code>. Представимые таким образом числа — это числа на отрезке <math>[-2^{31},\; 2^{31}-1]</math>.