3.1.2.     ЧИСЛОВЫЕ ДАННЫЕ

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

Целые числа в зависимости от типа данных хранятся в памяти компьютера, занимая один, два, четыре и более байта. Каждый бит в байте – это один двоичный разряд. В случае, когда число должно иметь знак, один из разрядов используется для хранения знака. Даже 32-разрядного целочисленного представления как со знаком, так и без вполне достаточно для решения большинства задач.

Теоретически в памяти компьютера представление отрицательного целого числа может храниться в прямом, обратном или дополнительном коде. Предположим, нам надо представить в двоичном виде целое число 7. Без знака оно поместится в 8-разрядную ячейку следующим образом:

0

0

0

0

0

1

1

1

Если это десятичное число -7 (минус семь), то его прямое представление будет выглядеть так:

                                 1       0        0       0        0       1       1       1

То есть старший бит призван показать, что это число со знаком «минус».

Однако на практике отрицательные числа не хранятся в виде прямого кода, а всегда приводятся к дополнительному коду. Этот код получается из прямого следующим образом: все разряды, кроме знакового, инвертируются (то есть вместо единиц подставляются 0, вместо нулей – единицы). Так число превращается в обратный код. Затем к результату прибавляется единица, и код становится до­полнительным. Вот так будет выглядеть дополнительный код для числа -7:

1

1

1

1

1

0

0

1

Дополнительный код используется для уменьшения количества циклов, за которые процессор выполняет арифметические операции над этими числами, по­скольку позволяет заменить операцию вычитания операцией сложения.

Действительные числа состоят из двух частей: мантиссы и порядка. Ман­тисса – это целое число, содержащее только значащие цифры исходного числа, а порядок – это позиция запятой, разделяющей целую и дробную части числа. Например, если в памяти надо сохранить число 00313,560, то записаны будут два целых числа: 31356 и 3.

При хранении действительных чисел возникает проблема: некоторые действия над числами приводят к потере точности.

Пример

При делении 1 на 3 результатом является бесконечная иррациональная дробь: 0,3333… Поскольку место в памяти, отведенное под запись этого числа, не бесконечно, то в определенном месте повторение троек придется остановить и записать в память округленное число. Это, в свою очередь, значит, что при умножении такой дроби на три уже не получится результат, равный единице, то есть происходит потеря точности.