Представление чисел в компьютере
Представление целых чисел
Целые числа могут представляться в компьютере со знаком или без знака.
Целые числа без знака обычно занимают в памяти один или два байта и принимают в однобайтовом формате значения от 0000 0000b до 1111 1111b , а в двубайтовом формате – от 0000 0000 0000 0000b до 1111 1111 1111 1111b.
Диапазоны значений целых чисел без знака
Формат числа в байтах | Диапазон | |
Запись с порядком | Обычная запись | |
0 ... 28–1 | 0 ... 255 | |
0 ... 216–1 | 0 ... 65535 |
Целые числа со знаком обычно занимают в памяти компьютера один, два или четыре байта, при этом самый левый (старший) разряд содержит информацию о знаке числа. Знак «плюс» кодируется нулем, а «минус» – единицей.
Диапазоны значений целых чисел со знаком
Формат числа в байтах | Диапазон | |
Запись с порядком | Обычная запись | |
–27 ... 27–1 | –128 ... 127 | |
–215 ... 215–1 | –32768 ... 32767 | |
–231 ... 231–1 | –2147483648 ... 2147483647 |
Представление вещественных чисел
Вещественные числа в компьютерах различных типов записываются по-разному. При этом компьютер обычно предоставляет программисту возможность выбора из нескольких числовых форматов наиболее подходящего для конкретной задачи — с использованием четырех, шести, восьми или десяти байтов.
Приведем характеристики форматов вещественных чисел, используемых IBM-совместимыми персональными компьютерами:
Форматы вещественных чисел | Размер в байтах | Примерный диапазон абсолютных значений | Количество значащих десятичных цифр |
Одинарный | 10–45 … 1038 | 7 или 8 | |
Вещественный | 10–39 … 1038 | 11 или 12 | |
Двойной | 10–324 … 10308 | 15 или 16 | |
Расширенный | 10–4932 … 104932 | 19 или 20 |
Из этой таблицы видно, что форма представления чисел с плавающей точкой позволяет записывать числа с высокой точностью и из весьма широкого диапазона
Процессор
Архитектура компьютера и принципы его работы, сведения общего характера
Термин «архитектура» используется для описания принципа действия, конфигурации и взаимного соединения основных логических узлов ЭВМ. Архитектура – это многоуровневая иерархия аппаратно-программных средств, из которых строится ЭВМ.
Основы учения об архитектуре ЭВМ заложил выдающийся американский математик Джон фон Нейман. Первая ЭВМ «Эниак» была создана в США в 1946 г. В группу создателей входил фон Нейман, который и предложил основные принципы построения ЭВМ: переход к двоичной системе счисления для представления информации и принцип хранимой программы.
Программу вычислений предлагалось помещать в запоминающем устройстве ЭВМ, что обеспечивало бы автоматический режим выполнения команд и, как следствие, увеличение быстродействия ЭВМ. (Ранее все вычислительные машины хранили обрабатываемые числа в десятичном виде, а программы задавались путём установки перемычек на специальной коммутационной панели.) Нейман первым догадался, что программа может также храниться в виде набора нулей и единиц, причём в той же памяти, что и обрабатываемые ею числа.
Принципы фон Неймана
В основу построения подавляющего большинства компьютеров положены следующие общие принципы, сформулированные Джоном фон Нейманом еще в 1945 г.
1. Принцип программного управления. Программа состоит из набора команд, выполняющихся процессором автоматически в определенной последовательности.
Выборка программы из памяти осуществляется с помощью счетчика команд (PC). Этот регистр процессора последовательно увеличивает хранимый в нем адрес очередной команды на длину команды. А так как команды программы расположены в памяти друг за другом, то тем самым организуется выборка цепочки команд из последовательно расположенных ячеек памяти. Если же нужно после выполнения команды перейти не к следующей, а к какой-то другой, используются команды условного или безусловного перехода, которые заносят в счетчик команд номер ячейки памяти, содержащей следующую команду. Выборка команд из памяти прекращается после достижения и выполнения команды «стоп». (Необходимо уточнить – по команде стоп современный компьютер, конечно же, не останавливается: прикладная программа завершается, а управление возвращается операционной системе, которая, собственно, и запустила программу.)
Таким образом, процессор исполняет программу автоматически, без вмешательства человека.
2. Принцип однородности памяти. Программы и данные хранятся в одной и той же памяти, поэтому компьютер не различает, что хранится в данной ячейке памяти — данные (число, текст) или команда. Над командами можно выполнять такие же действия, как и над данными.
Это открывает целый ряд возможностей. Например, программа в процессе своего выполнения также может подвергаться переработке, что позволяет задавать в самой программе правила получения некоторых ее частей (так в программе организуется выполнение циклов и подпрограмм).
Более того, команды одной программы могут быть получены как результаты исполнения другой программы. На этом принципе основаны методы трансляции — перевода текста программы с языка программирования высокого уровня на язык конкретной машины.
3. Принцип адресности. Структурно основная память состоит из перенумерованных ячеек. Процессору в произвольный момент времени доступна любая ячейка.
Отсюда следует возможность давать имена областям памяти так, чтобы к запомненным в них значениям можно было впоследствии обращаться или менять их в процессе выполнения программ с использованием присвоенных имен.
Основные понятия
Поясним основные понятия, которыми мы должны будем пользоваться при разборе архитектуры (и которые уже использовались в принципах фон Неймана).
Адрес – способ обратиться к содержимому ячейки памяти. Обычно в качестве минимально адресуемой ячейки памяти выбирается восьмиразрядная ячейка памяти (байт), поэтому можно считать, что адрес это номер байта в адресном пространстве.
Адресное пространство – диапазон доступных процессу адресов памяти. Не утверждается, что все эти адреса доступны безусловно. Возможно, что для корректного доступа к каким-то из них требуется некая специальная процедура. Не утверждается также и того, что обращение по любому из них обязательно должно быть успешно – возможно, попытка обратиться по адресу Х приведёт к немедленному прерыванию программы, но важно, что потенциально можно использовать этот диапазон, т.е. породить адрес.
Размер объема памяти обычно измеряют в кило-, мега-, гига-, тера- и петабайтах (больше пока не употребляются). Название «килобайт» общепринято, но формально неверно, так как приставка кило-, в этом случае означает умножение не на 1000, а на 210 т.е. на 1024. При этом обозначение Кбайт (и все остальные тоже) начинают с прописной буквы в отличие от строчной буквы к для обозначения множителя 103. Приведем определения для всех введенных приставок.
Название | Символ | Степень | Степень ГОСТ |
Кбайт | KiB | 210 | 103 |
Мбайт | MiB | 220 | 106 |
Гбайт | GiB | 230 | 109 |
Тбайт | TiB | 240 | 1012 |
Пбайт | PiB | 250 | 1015 |
Машинная команда (она же инструкция) – «Слово» машинного языка располагающееся в памяти. У каждой команды есть свой код, который называют код операции (англ. operation code). Код операции показывает, какую именно операцию из системы команд процессора надо выполнить. В отличие от самого кода операции, машинные команды, которые обрабатывает процессор, обычно включают один или два операнда(англ. operand), над которыми должна выполняться операция, хотя некоторые операции могут совсем их не иметь.
Для того чтобы исполнить команду, процессор должен прочитать ее из памяти. Для того чтобы произвести операцию над данными, процессор должен прочитать их из памяти, и, возможно, после произведения над ними определенного действия, записать их обратно в память в обновленном (измененном) виде. Команды и данные идентифицируются их адресом, который, по сути, представляет собой порядковый номер ячейки памяти.
Операнд - аргумент операции или, иначе говоря, элемент данных, над которым производятся машинные операции, Операнды могут быть обозначением регистра – операнд регистр, непосредственно числами (константами) – непосредственный операнд, значениями адреса – операнд память (в этом случае действие производится над данными расположенными по этому адресу).
Большинство команд требуют двух операндов, один из которых является операндом-источником, а второй — операндом назначенияили приемником. В двухоперандной машинной команде возможны следующие сочетания операндов:
- Регистр – регистр;
- Регистр – память;
- Память – регистр;
- непосредственный операнд – регистр;
- непосредственный операнд – память.
Программа– это просто список инструкций, выполняемых процессором.
Регистр процессора – сверхбыстрая память внутри процессора или иначе ячейка процессора. Регистр предназначен, прежде всего, для хранения промежуточных результатов вычисления (регистр общего назначения/регистр данных) или данных, необходимых для работы процессора (специальные регистры). Можно сказать, что регистры общего назначения - это переменные, как X или Y в алгебре. Только регистры физически существуют в отличие от абстрактных переменных. С точки зрения схемотехники регистр это многоразрядная ячейка памяти, которая состоит из нескольких триггеров.
В процессоре имеется значительное количество регистров, большая часть которых используется самим процессором и недоступна программисту. Например, при выборке из памяти очередной команды она помещается в регистр команд. Программист обратиться к этому регистру не может. Имеются так же регистры, которые в принципе программно доступны, но обращение к ним осуществляется из программ операционной системы. Этими регистрами пользуются в основном разработчики операционных систем.
Регистры могут быть восьмиразрядные (в такой регистр помещаются 8 бит, т.е. 1 байт), шестнадцатиразрядные (в такой регистр помещается два байта или говорят машинное слово), 32-разрядные и т.д.
Доступ к значениям, хранящимся в регистрах, как правило, в несколько раз быстрее, чем доступ к ячейкам оперативной памяти.
Счетчик команд – регистр процессора, содержащий адрес текущей выполняемой команды.