Представление чисел в ЭВМ — это представление чисел в естественной форме, то есть с фиксированной запятой, и в нормальной форме, то есть с плавающей запятой.
Введение
В электронных вычислительных машинах (ЭВМ) используются два формата представления чисел:
- Естественный формат, или формат с фиксированной запятой (точкой).
- Нормальный формат, или формат с плавающей запятой (точкой).
Представление чисел в ЭВМ
В формате с фиксированной запятой (точкой) числа должны изображаться в виде очерёдности цифр с неизменным для всех чисел положением запятой, которая отделяет целую часть числа от дробной. К примеру, предположим, что числа представлены в десятичной системе счисления и обладают пятью разрядами в целой части числа (до запятой) и пятью разрядами в дробной части (после запятой). Числа, представленные в такой разрядной сетке, должны иметь следующий вид:
- +00721.35500.
- +00000.00328.
Такой формат отображения чисел является самым простым и естественным, но обладает небольшим диапазоном представления чисел и поэтому часто бывает просто неприемлем при вычислениях.
В памяти ЭВМ числа с фиксированной точкой могут храниться в трех формах, а именно:
- В форме полуслова, то есть, это, как правило, 16 бит или два байта.
- В форме слова, то есть, с размером в 32 бита или четыре байта.
- В форме двойного слов, то есть, с размером 64 бита или восемь байтов.
Отрицательные числа в формате с фиксированной точкой пишутся в разрядную сетку в дополнительном коде, который формируется прибавлением единицы к младшему разряду обратного кода. А обратный код формируется заменой единиц на нули, а нулей на единицы в прямом двоичном коде.
В формате представления с плавающей запятой (точкой) число отображается в виде двух наборов цифр, а именно это:
- Мантисса.
- Порядок.
Причём мантисса по абсолютной величине должна быть меньше единицы, а порядок должен быть целым числом.
К примеру, приведенные выше в примере числа в нормальном формате можно представить следующим образом:
- $+0,721355х10^3.$
- $+0,328х10^{-3}.$
Нормальный формат представления позволяет обеспечить большой диапазон отображения чисел и считается основным в современных компьютерах. Необходимо отметить, что все числа с плавающей запятой сохраняются в компьютерах в так называемом нормализованном виде. Нормализованным именуется такое число, в старшем разряде мантиссы которого расположена цифра больше нуля. Ниже приведён пример нормализованных, то есть приведенных к правильной дроби, чисел:
- $35_{10} = 0,35_{10} х 10^{+2}.$
- $0,00007245_8 = 0,7245_8 х 8^{-4}.$
- $F5C,9B_{16} = 0,F5C9B_{16}x 16^{+3}.$
В памяти компьютера числа с плавающей точкой могут храниться в двух формах:
- Слово, размером в 32 бита или четыре байта.
- В форме двойного слова, то есть, размером 64 бита или восемь байт.
При алгебраическом представлении двоичных чисел, знак числа, как правило, должен кодироваться двоичной цифрой, при этом:
- Код нуль обозначает знак «+» (плюс).
- Код единица обозначает знак «-» (минус).
Для того чтобы представить числа в алгебраической форме, то есть для представления чисел с учетом их знака, в вычислительной технике применяются следующие коды:
- Обратный код.
- Дополнительный код.
Данные коды предоставляют возможность замены неудобной для компьютера операции вычитания на операцию суммирования с отрицательным числом. Дополнительный код может обеспечить более быстрое исполнение операций, по этой причине в компьютерах используется наиболее часто именно такой код.
Для преобразования отрицательного числа в обратный код, следует инвертировать каждую цифру этого числа, то есть в знаковом разряде поставить единицу, а во всех значащих разрядах нули поменять на единицы, а единицы заменить нулями.
Для получения дополнительного кода отрицательного числа, следует все его цифры подвергнуть инвертированию, то есть, в знаковый разряд установить единицу, во всех значащих разрядах нули поменять на единицы, а единицы заменить нулями. А далее нужно к младшему разряду добавить единицу. В случае, когда возникает перенос из первого после запятой разряда в знаковый разряд, к числу необходимо приплюсовать единицу в младший разряд.
Известное эмпирическое правило гласит, что для получения дополнительного кода отрицательного числа следует все символы данного числа подвергнуть инвертированию, за исключением (младшей) единицы и тех нулей, которые за ней стоят.
Типами данных является набор соглашений о программно-аппаратном формате представления и обработки, а также ввода, контроля и вывода элементарных данных. Структурами данных являются методы композиции простых данных в агрегаты и операции над этими данными.
Форматами файлов является отображение информации на уровне взаимодействия операционной системы с прикладными программами.
В ранних языках программирования, а вернее, в системах программирования таких как Фортран, Алгол, которые были ориентированы только на вычислительные процедуры, не предусматривалась поддержка развитых систем типов и структур данных. В языке программирования Алгол символьные величины и переменные вообще не были предусмотрены, в отдельных реализациях строки (символы в апострофах) встречались лишь в операторах печати данных.
В языке программирования Алгол использовались следующие типы числовых данных:
- Тип integer, который обозначал целые числа.
- Тип real, который обозначал действительные числа.
Они отличаются допустимым диапазоном изменения, внутренним представлением и используемыми командами процессора ЭВМ. Имеется ввиду, соответственно, вычисления с фиксированной и плавающей точкой. Нечисловые информационные данные отображались типом boolean, то есть это логические данные, которые имеют диапазон значений «истина» и «ложь» (true, false).
Возникшие позже языки и системы программирования, такие как Кобол и Паскаль, предусматривали новые типы данных:
- Символьный тип (цифры, буквы, знаки препинания и прочее).
- Числовые символьные типы для вывода.
- Числовые двоичные типы для вычислений.