Формат представления данных в эвм. Представление данных в памяти эвм

02.04.2022 Photoshop

Форматы представления данных в памяти ЭВМ. Машинные коды.

План.

1. Форматы представления данных в памяти ЭВМ.

a. Представление чисел в форме с фиксированной точкой

b. Представление чисел в форме с плавающей точкой

2. Машинные коды: прямой, обратный, дополнительный.

Форматы представления данных в памяти ЭВМ.

Для представления чисел (данных) в памяти ЭВМ выделяется оп­ределенное количество битов. В отличие от нумерации разрядов числа биты в байте нумеруются слева направо, начиная с 0. Каждый байт в памяти ЭВМ имеет свой порядковый номер, который называется абсолютным адресам байта . Байт является основной единицей хранения данных, это наименьшая адресуемая единица обмена информации в оперативной па­мяти ЭВМ, то есть минимальная единица обмена информации, имеющая адрес в памяти ЭВМ.

Последовательность нескольких смежных байтов образует поле данных . Количество байтов поля называется длиной поля , а адрес само­го левого байта поля - адресом поля . Обработка информации может вестись либо побайтно, либо полями данных (или форматом данных). Форматы данных показывают, как информация размещается в оперативной памяти и регистрах ЭВМ. Форматы данных различают по длине, типу данных и структуре, а каждое значение, содержащееся в байте может быть интерпретировано по разному:

– кодированное представление символа внешнего алфавита (при вводе и выводе данных);

– целым знаковым или беззнаковым числом (при внутреннем представлении чисел в памяти ЭВМ);

– частью команды или более сложной единицы данных и т.д.

В ЭВМ существуют следующие формы представления целых чисел: полуслово (байт), слово (два последовательных байта, пронумерованных слева направо от 0 до 15), двойное слово (4 байта).

Если в указанных форматах размещаются числа, то веса их разрядов возрастают справа налево.

В ЭВМ для представления чисел используется естественная (представление числа с фиксированной точкой) и полулогарифмическая (представление числа с плавающей точкой) формы.

Представление чисел в форме с фиксированной точкой.

В используемых представлениях чисел “запятая” или “десятичная точка” - это условный символ, предназначенный для разделения целой и дробной частей числа. Запятая имеет, следовательно, точный математический смысл, независимо от используемой системы счисления, и ее положение нисколько не меняет алгоритм вычислений или форму результата.

Если обрабатываемые числа имеют величину одного порядка, можно фиксировать позицию запятой или точки (такое представление называется представлением с фиксированной точкой). Тогда при обработке чисел в машине нет необходимости учитывать положение (представлять) десятичной точки. И тогда ее положение на уровне программы считается одинаковым и учитывается только в результате.

Существует в основном 2 способа фиксирования десятичной точки:

1) точка располагается справа от младшей цифры числа, и мы имеем целые числа;

2) точка располагается слева от старшей цифры числа, и мы имеем дробные числа по абсолютному значению меньше единицы.

Целые положительные числа можно представлять непосредственно в двоичной системе счисления (двоичном коде). В такой форме представления легко реализуется на компьютере двоичная арифметика.

Если же нужны и отрицательные числа, то знак числа может быть закодирован отдельным битом (обычно это старший бит). Старший разряд является знаковым, если он содержит 1 , то число отрицательное , если 0 , то число положительное .

При шестнадцатиразрядной сетке мы имеем:

В общем случае диапазон представления целых чисел равен (n – число разрядов в формате):

– для беззнаковых 0 ≤ x ≤ 2 n -1 (при n=8 от 0 до 255)

– для знаковых -2 n -1 ≤ x ≤ +2 n -1 -1 (при n=8 от -128 до 127);

Существенным недостатком такого способа представления является ограниченный диапазон представления величин, что приводит к переполнению разрядной сетки при выходе за допустимые границы и искажению результата, например, если рассмотреть пяти разрядную знаковую сетку, то при сложении двух чисел +22 и +13 получим:

Представление чисел в форме с плавающей точкой.

Действительные числа в математике представляются конечными или бесконечными дробями. Однако в компьютере числа хранятся в регистрах и ячейках памяти, которые являются последовательностью байтов с ограниченным количеством разрядов. Следовательно, бесконечные или очень длинные числа усекаются до некоторой длины и в компьютерном представлении выступают как приближенные.

Для представления действительных чисел, как очень маленьких, так и очень больших, удобно использовать форму записи чисел в виде произведения:

А = ± М·n ± p

где n - основание системы счисления;

M – мантисса;

р – целое число, называемое порядком (определяет местоположение десятичной точки в числе).

Такой способ записи чисел называется представлением числа с плавающей точкой .

Пример: -245,62=-0,24565·10 3 , 0,00123=0,123·10 -2 =1,23·10 -3 =12,3·10 -4

Очевидно, такое представление не однозначно.

Если мантисса заключена между n -1 и 1 (т.е. 1/n £ |M| <1), то представление числа становится однозначным, а такая форма назы­вается нормализованной .

Пример : для десятичной системы счисления - 0,1 < |m| < 1 (мантисса - число меньше 1, и первая цифра после запятой отлична от нуля, т.е. значащая).

Действительные числа в компьютерах различных типов записываются по-разному, тем не менее, существует несколько международных стандартных форматов, различающихся по точности, но имею­щих одинаковую структуру. Для основанного на стандарте IEEE – 754 (определяет представление чисел с одинарной точностью (float ) и с двойной точностью (double )) представление вещественного числа в ЭВМ используется m+p+1 бит, распределяемые следующим образом: один разряд (S)- используется для знака мантиссы, p – разрядов определяют порядок, m разрядов определяют абсолютную величину мантиссы. Для записи числа в формате с плавающей запятой одинарной точности требуется тридцатидвухбитовое слово. Для записи чисел с двойной точностью требуется шестидесятичетырёхбитовое слово.

1 p-1 0 m-1 0
S Порядок Дробная часть М

Так как порядок может быть положительным или отрицатель­ным, нужно решить проблему его знака. Величина порядка представляется с избытком, т.е., вместо истинного значения порядка хранится число, называемое характеристикой (или смещенным порядком ).

Смещение требуется, чтобы не вводить в число еще один знак. Смещённый порядок всегда положительное число. Для одинарной точности смещение принято равным 127, а для двойной точности – 1023 (2 p -1 -1) . В десятичной мантиссе после запятой могут присутствовать цифры 1:9, а в двоичной - только 1. Поэтому для хранения единицы после двоичной запятой не выделяется отдельный бит в числе с плавающей запятой. Единица подразумевается, как и двоичная запятая . Кроме того, в формате чисел с плавающей запятой принято, что мантисса всегда больше 1. То есть диапазон значений мантиссы лежит в диапазоне от 1 до 2.

Примеры :

1) Определить число с плавающей запятой, лежащее в четырёх соседних байтах:

11000001 01001000 00000000 00000000

Разделим двоичное представление на знак (1 бит), порядок (8 бит) и мантиссу (23 бита):

1 10000010 10010000000000000000000

– Знаковый бит, равный 1 показывает, что число отрицательное.

– Экспонента 10000010 в десятичном виде соответствует числу 130. Скорректируем порядок: вычтем число 127 из 130, получим число 3.

– К мантиссе добавим слева скрытую единицу 1 ,100 1000 0000 0000 0000 0000, перенесем порядок от скрытой единицы вправо на полученную величину порядка: 1 100, 1000 0000 0000 0000 0000.

– И, наконец, определим десятичное число: 1100,1 2 = 12,5 10

– Окончательно имеем -12,5

2) Определить число с плавающей запятой, лежащее в четырёх соседних байтах:

01000011 00110100 00000000 00000000

– Знаковый бит, равный 0 показывает, что число положительное.

– Экспонента 10000110 в десятичном виде соответствует числу 134. Вычтя число 127 из 134, получим число 7.

– Теперь запишем мантиссу: 1 ,011 0100 0000 0000 0000 0000

– И, наконец, определим десятичное число: 10110100 2 =180 10

Поскольку под мантиссу и порядок отводится определенное число разрядов, соответственно m и p , то можно оценить диапазон чисел, которые можно представить в нормализованном виде в системе счисления с основанием n .

Если m=23 и p=8 (4 байта), то диапазон представленных чисел от 1,5·10 -45 до 3,4·10 +38 (обеспечивает точность с 7-8 значащими цифрами).

Если m=52 и p=11 (8 байт), то диапазон представленных чисел от 5,0·10 -324 до 1,7·10 +308 (обеспечивает точность с 15-16 значащими цифрами).

Чем больше разрядов отводится под запись мантиссы, тем выше точность представления числа. Чем больше разрядов занимает поря­док, тем шире диапазон от наименьшего отличного от нуля числа до наибольшего числа, представимого в компьютере при заданном формате.

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

Тема 1. Принципы организации ЭВМ

Кодирование информации в ЭВМ.

Кодированием называется представление символов одного алфавита средствами другого алфавита.

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

Как представить символы другого алфавита с помощью двоичного алфавита?

Для кодирования алфавитов, содержащих более 2-х символов используются последовательности символов двоичного алфавита. Например, последовательностью из двух двоичных символов можно закодировать 4 символа другого алфавита:

00 --> А 01 à В 10 à С 11 à D .

Можно показать, что число возможных комбинаций при использовании двоичного алфавита равно 2 n , где n количество двоичных символов в последовательности. При n равном 8 число возможных комбинаций равно 256, что вполне достаточно для кодирования большинства известных алфавитов, поэтому последовательность из восьми двоичных символов широко используется для кодирования информации в ЭВМ. Последовательность из восьми двоичных разрядов принято называть байтом .

Пример кодирования:

символ А à 1100 0001 символ 9 à 1111 1001.

В настоящее время для кодирования символов используются также последовательности из 16 двоичных символов (2 байта).

Техническим носителем информации в ЭВМ является ячейка памяти, состоящая из совокупности простейших элементов, каждый из которых может находиться в одном из двух возможных состояний (обозначаемых как 0 и 1). Ячейка памяти может содержать различное число простейших элементов. Обычно количество элементов в ячейке кратно 8.

Для измерения памяти используются также более крупные единицы:

1 килобайт (кб) = 2 10 байт = 1024 байт;

1 мегабайт (мб) =2 20 байт = 1048576 байт;

1 гигабайт (гб) = 2 30 байт =

Машинным кодом (или просто кодом) называется совокупность 0 и 1, которую может хранить ячейка памяти.

Код длиной в 2 байта называется полусловом,

код длиной в 4 байта называется словом,

код длиной в 8 байта называется двойным словом.

Архитектура ЭВМ

Во все времена человек стремился расширить свои возможности создавая различные приборы (орудия труда, познания мира). Например недостаточность зрения он компенсировал микроскопом и телескопом. Ограниченные воэможности передавать информацию друг другу расширяются при помощи телефона радио и телевидения.

Вычислительные машины (ЭВМ) "дополняют" возможности человеческого мозга по обработке информации и позволяют увеличить скорость вычислений, а следовательно и принятия решений в ходе выполнения различных работ в сотни и тысячи раз.

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

Идея использования программного управления для построения автоматического вычислительного устройства впервые была высказана английским математиком Чарлзом Бэббиджем еще в 1833 г. Однако низкий уровень развития науки и техники не позволил в то время создать автоматическое вычислительное устройство. Идея программного управления получила дальнейшее развитие в работах американского ученого Джона фон Неймана.

В 40-х годах 20 века работы в области ядерной физики, баллистики, аэродинамики и т.п. потребовали огромной вычислительной работы. Наука и техника были поставлены перед диллемой: или всем сесть за арифмометры, или сделать новый эффективный автоматический инструмент для вычислений. Как раз в это время Дж. Фон Нейман сформулировал основные принципы построения вычислительной машины. В результате в 1945 году была построена первая вычислительная машина, а с 1953 года началось серийное изготовление ЭВМ.

Архитектура ЭВМ предложенная Нейманом приведена на рис. 1.1.1. ЭВМ содержит:

Устройства ввода (например клавиатуру) для ввода программ и данных в ЭВМ;

- Устройства вывода (например монитор, принтер и т.п.) для вывода данных из ЭВМ;

- память - устройство для хранения информации. Память может быть построена на различных физических принципах, но в любом случае она представляет собой совокупность ячеек, в которых можно хранить в закодированном виде различные данные (числа, символы). Все ячейки памяти пронумерованы. номер ячейки памяти называется адресом.

- процессор – это устройство, способное выполнять некоторый заданный набор операций над данными и вырабатывать значения заданного набора логических условий над этими данными. Процессор состоит из устройства управления (УУ) и арифметико логического устройства (АЛУ).

УУ предназначено для выполнения команд и управления работой ЭВМ при выполнении отдельной команды.

АЛУ предназначено для выполнения арифметических и логических операций, набор которых определяется системой команд, принятой для данного типа ЭВМ.

Программа - это алгоритм решения задачи, представленный в форме понятной ЭВМ.

В основе ЭВМ лежит два фундаментальных принципа Дж. Фон Неймана.

1 Принцип хранимой в памяти программы . Согласно этому принципу программа, закодированная в цифровом виде хранится в памяти ЭВМ наряду с числами (данными). В командах указываются не сами числа, участвующие в операциях, а адреса ячеек памяти, в которых они находятся.

Пример команды

КО А1 А2 А3

где КО – код операции; А1 – адрес первого операнда; А2 – адрес второго операнда; А3 – адрес ячейки памяти в которую надо поместить результат. КО, А1, А2, А3 представляют собой последователиности нулей и единиц. Например

А1: 00011110……110001 (32 разряда).

Если КО это код операции сложения, то смысл этой команды можно сформулировать так:

Взять данное из ячейки с адресом А1;

Взять данное из ячейки с адресом А2;

Выполнить операцию сложения этих данных;

Поместить результат в ячейку с адресом А3.

Заметим, что в командах указываются не обрабатываемые данные, а адреса ячеек памяти. Все это делает ЭВМ универсальным средством обработки информации. Чтобы решить другую задачу не требуется изменять аппаратуру. Достаточно ввести в память другую программу и данные.

2.Принцип произвольного доступа к основной памяти . Согласно этому принципу процессору в произвольный момент времени доступна любая ячейка памяти.

Принцип действия ЭВМ

В соответствии с этими принципами ЭВМ следующим образом решает задачу.

1.Программа в виде последовательности команд в закодированном виде (машинная программа) размещается в памяти ЭВМ.

2. В памяти также размещаются и все данные которые использует программа.

3.Процессор считывает из памяти очередную команду, УУ расшифровывает ее и определяет кто должен ее выполнять (УВВ, АЛУ,). Если это команда арифметического типа, то управление передается АЛУ, которое определяет какую операцию и над какими данными надо выполнить. Затем АЛУ извлекает из памяти значения данных и выполняет указанную операцию.После передачи результата в память АЛУ сообщает УУ, что можно выполнять следующую команду.

Практически все выпускаемые в настоящее время ЭВМ имеют Неймановскую архитектуру (структура ЭВМ может быть разной).

Представление данных в ЭВМ.

Машинный код обрабатываемой информации (данные) называется операндом. По смысловому содержанию операнды делятся на символьные и числовые.

Символьные операнды.

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

Например А (рус) : 11100001: А (лат) 01000001 .

Числовые данные.

Источниками и носителями информации могут быть сигналы любой природы: текст, речь, музыка и т.д. Однако хранение и перера­ботка инфор­мации в ее естест­венном виде неудобна, а иногда и невозможна. В таких слу­чаях применяется коди­рование. Ко­дом называется правило, по ко­торому со­поставляются различные алфавиты и слова (они появились в глу­бокой древно­сти в виде тайнописи, когда ими пользо­вались для засекречивания важ­ного со­общения ). Исторически пер­вый уни­версальный код, предназначенный для передачи со­обще­ний, связан с именем изобре­тателя телеграфного аппарата Морзе и известен как аз­бука Морзе, где каждой букве или цифре соответст­вует своя последовательность из крат­ковременных, называемых точками, и длительных - тире сигналов, разделяе­мых пау­зами.

Компьютер, как из­вестно, может обрабатывать информацию, представ­ленную в чи­словой форме. Существуют различные способы записи чисел. Совокупность прие­мов записи и наименования чисел называется сис­темой счисления. Можно ука­зать два основных класса, на которые разделя­ются системы счис­ления - пози­ционные и непо­зиционные . Примером по­зи­цион­ной системы счисле­ния явля­ется десятичная, непозиционной - римская сис­тема счисления.

В непозиционных системах количественное значение разряда определя­ется только его изображением и не зависит от его места (позиции ) в числе. В ней вводится ряд символов для представления основных чисел, а остальные числа - результат их сложения и вычитания. Основные символы для обозна­чения десятичных разрядов в римской системе счисления: I – один, X – де­сять, C – сто, M – тысяча и их половины V – пять, L – пятьдесят, D – пять­сот. Натуральные числа записываются при помощи повторения этих цифр (например, II – два, III – три, XXX – тридцать, CC – двести ). Если же боль­шая цифра стоит перед меньшей цифрой, то они складываются, если на­обо­рот – вычитаются (например, VII – семь, IX – девять ). В непозиционных системах счисления не представля­ются дробные и отрица­тель­ные числа, по­этому нас будут интересовать только по­зицион­ные системы счисле­ния.

Система счисления называется позиционной, если значение числа в ней оп­ределяется как символами, принятыми в системе, так и положением (пози­цией ) этих символов в числе. Напри­мер:

123,45 = 1∙10 2 + 2∙10 1 + 3∙10 0 + 4∙10 –1 + 5∙10 –2 ,

или, в общем виде:

X (q) = x n -1 q n -1 + x n -2 q n -2 + … + x 1 q 1 + x 0 q 0 + x -1 q -1 + x -2 q -2 + … + x -m q –m .

Здесь X (q) – запись числа в системе счисления с основанием q ;

x I – натуральные числа меньше q, т.е. цифры;

n – число разрядов целой части;



m – число разрядов дробной части.

Записывая слева направо цифры число, мы получим закодированную за­пись числа в q -ичной системе счисления.

X (q) = x n-1 x n-2 x

1 x 0 , x -1 x -2 x -m .

В информатике, вследствие применения электронных средств вычисли­тельной техники, большое значение имеет двоичная система счисления, q = 2. На ранних этапах развития вычислительной техники арифметические операции с действительными числами производились в двоичной системе ввиду про­стоты их реализации в электронных схемах вычислительных машин. Отметим, что принци­п действия базовых элементов цифровых вычислительных машин осно­ван на двух устойчивых со­стояниях - проводится или нет электрический ток, или в каком направлении намагничен магнитный носитель и т.д. и для записи двоичного числа достаточно использовать только две цифры 0 и 1, соответствующих каждому из состояний. Таблица сложения и таб­лица ум­но­жения в двоичной системе будет иметь по четыре пра­вила. И для реализации поразрядной арифметики в компьютере потребуется вместо двух таблиц по сто правил в десятичной системе счисления две таб­лицы по четыре правила в двоичной.

0 + 0 = 0 0 * 0 = 0
0 + 1 = 1 0 * 1 = 0
1 + 0 = 1 1 * 0 = 0
1 + 1 = 10 1 * 1 = 1

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

Так как десятичная система для нас удобна и привычна, все арифмети­ческие действия мы делаем в ней, и преобразование чисел из произвольной недесятичной (q ≠ 10) на основе разложения по степеням q . Преобразование из десятичной в прочие системы счисления производится с помощью правил умножения и деления. При этом целая и дробная части переводятся отдельно.

АЛФАВИТ 2-чной системы счисления: 0 1

АЛФАВИТ 8-ричной системы счисления: 0 1 2 3 4 5 6 7

АЛФАВИТ 10-чной системы счисления: 0 1 2 3 4 5 6 7 8 9

АЛФАВИТ 16-ричной системы счисления: 0 1 2 3 4 5 6 7 8 9 A B C D E F

Для перевода числа из десятичной системы счисления в любую другую систему счисления нужно делить «до упора» это число на основание той системы (основание системы – это количество символов в ее алфавите ), в которую переводим число, а потом прочесть остатки справа на­лево. Для пе­ревода числа из любой системы счисления в десятичную нужно умножить содержимое каждого разряда на основание системы в степени рав­ной поряд­ковому номеру разряда и всё сложить. Перевод числа из восьмеричной сис­темы в двоичную осуществляется заменой слева направо восьмеричной цифры тремя двоичными цифрами. Перевод числа из двоичной системы счисления в восьмеричную осуще­ствляется заменой справа налево каждой триады двоичных цифр на одну восьмеричную цифру.

Для перевода числа из десятичной системы счисления в любую другую систему счисления можно воспользоваться стандартной программой Каль­кулятор .

Набрав число и щелкнув на одном из переключателей Hex , Dec , Oct или Bin , получим представление этого числа в соответствующей системе.

Как отмечалось, двоичная сис­тема счисле­ния, будучи естественной для ЭВМ, не удобна для восприятия чело­ве­ком. Большое количе­ство разря­дов двоичного числа по сравнению с соответ­ст­вующим десятичным, однооб­раз­ное чередование единиц и нулей является ис­точником ошибок и затруд­нений чтения двоичного числа. Для удобства записи и чтения двоичных чи­сел (но не для работы цифровых вычислительных машин! ), необходима бо­лее удоб­ная для записи и чтения система счис­ления. Такими являются сис­темы с ос­нова­нием 2 3 = 8 и 2 4 = 16, т.е. восьмеричная и шестнадцатеричная сис­темы счисления. Названные системы удобны тем, что в них, с одной сто­роны, обеспечивается чрезвычайно лег­кий перевод из двоичной сис­темы (а также обратный перевод ), т.к. основание системы – степень числа 2, с дру­гой - со­храняется компактный вид числа. Восьмеричная система широко ис­пользо­валась для записи машин­ных программ в ЭВМ 1 и 2 поколений. В на­стоящее время используется, в ос­нов­ном,

шестнадцатеричная система. Приведем пример соответствия шестна­дца­теричной и двоичной системы:

Пример для тетрад :

0000 = 0; 0001 = 1; 0010 = 2; 0011 = 3; 0100 = 4; 0101 = 5; 0110 = 6; 0111 = 7; 1000 = 8; 1001 = 9; 1010 = A; 1011 = B; 1100 = C; 1101 = D; 1110 = E; 1111 = F.

В ЭВМ используется представление информации в виде «машин­ного слова», длина которого равна некоторому числу бит, характерному для дан­ного типа ЭВМ. В ЭВМ первых поколений использовались ма­шинные слова различной длины, например 45 бит и т.д., то есть не равные це­лому числу байт. В современных компьютерах длина слова обычно 4 или 8 байт (в пер­вых моделях персональных компьютеров было 1 или 2 байта ).

Слово в машинной памяти

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

старший байт младший байт

Для представления информации в памяти ЭВМ (как числовой, так и нечисловой) используется двоичный способ кодирования. Элементарная ячейка памяти ЭВМ имеет длину 8 бит (байт). Каждый байт имеет свой номер (его называют адресом). Наибольшую последовательность бит, которую ЭВМ может обрабатывать как единое целое, называют машинным словом. Длина машинного слова зависит от разрядности процессора и может быть равной 16, 32 битам и т.д. Для кодирования символов достаточно одного байта. При этом можно представить 256 символов (с десятичными кодами от 0 до 255). Набор символов персональных ЭВМ IBM PC чаще всего является расширением кода ASCII (American Standart Code for Information Interchange - стандартный американский код для обмена информацией). В некоторых случаях при представлении в памяти ЭВМ чисел используется смешанная двоично-десятичная «система счисления», где для хранения каждого десятичного знака нужен полубайт (4 бита) и десятичные цифры от 0 до 9 представляются соответствующими двоичными числами от 0000 до 1001. Например, упакованный десятичный формат, предназначенный для хранения целых чисел с 18 значащими цифрами и занимающий в памяти 10 байт (старший из которых знаковый), использует именно этот вариант. Другой способ представления целых чисел - дополнительный код. Диапазон значений величин зависит от количества бит памяти, отведенных для их хранения. Например, величины типа Integer (все названия типов данных здесь и ниже представлены в том виде, в каком они приняты в языке программирования Turbo Pascal, в других языках такие типы данных тоже есть, но могут иметь другие названия) лежат в диапазоне от -32768 (-2 15) до 32767 (2 15 - 1), и для их хранения отводится 2 байта; типа Longlnt - в диапазоне от -2 31 до 2 31 - 1 и размещаются в 4 байтах; типа Word - в диапазоне от 0 до 65535 (2 16 - 1) (используется 2 байта) и т.д. Как видно из примеров, данные могут быть интерпретированы как числа со знаками, так и без знаков. В случае представления величины со знаком самый левый (старший) разряд указывает на положительное число, если содержит нуль, и на отрицательное, если - единицу. Вообще разряды нумеруются справа налево, начиная с 0. Ниже показана нумерация бит в двухбайтовом машинном слове. 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Дополнительный код положительного числа совпадает с его прямым кодом. Прямой код целого числа может быть получен следующим образом: число переводится в двоичную систему счисления, а затем его двоичную запись слева дополняют таким количеством незначащих нулей, сколько требует тип данных, к которому принадлежит число. Например, если число 37 (10) = 100101 (2) объявлено величиной типа Integer, то его прямым кодом будет 0000000000100101, а если величиной типа Longlnt, то его прямой код будет. Для более компактной записи чаще используют шестнадцатеричный код. Полученные коды можно переписать соответственно как 0025 (16) и 00000025 (16) . Дополнительный код целого отрицательного числа может быть получен по следующему алгоритму: 1) записать прямой код модуля числа; 2) инвертировать его (заменить единицы нулями, нули - единицами); 3) прибавить к инверсному коду единицу. Например, запишем дополнительный код числа (-37), интерпретируя его как величину типа Longlnt: 1) прямой код числа 37 есть; 2) инверсный код; 3) дополнительный код или FFFFFFDB (16) . При получении числа по его дополнительному коду прежде всего необходимо определить его знак. Если число окажется положительным, то просто перевести его код в десятичную систему счисления. В случае отрицательного числа необходимо выполнить следующий алгоритм: 1) вычесть из кода числа 1; 2) инвертировать код; 3) перевести в десятичную систему счисления. Полученное число записать со знаком минус. Примеры. Запишем числа, соответствующие дополнительным кодам: а) 0000000000010111. Поскольку в старшем разряде записан нуль, то результат будет положительным. Это код числа 23; б) 1111111111000000. Здесь записан код отрицательного числа. Исполняем алгоритм: 1) 1111I11111000000 (2) - 1 (2)= 1111111110111111 (2) ; 2) 0000000001000000; 3) 1000000 (2) = 64 (10) . Ответ: -64. Несколько иной способ применяется для представления в памяти персонального компьютера действительных чисел. Рассмотрим представление величин с плавающей точкой. Любое действительное число можно записать в стандартном виде М10 р, где 1

Персональный компьютер IBM PC позволяет работать со следующими действительными типами (диапазон значений указан по абсолютной величине): Покажем преобразование действительного числа для представления его в памяти ЭВМ на примере величины типа Double. Как видно из таблицы, величина это типа занимает в памяти 8 байт. На рисунке показано, как здесь представлены поля мантиссы и порядка: Можно заметить, что старший бит, отведенный под мантиссу, имеет номер 51, т.е. мантисса занимает младшие 52 бита. Черта указывает здесь на положение двоичной запятой. Перед запятой должен стоять бит целой части мантиссы, но поскольку она всегда равна 1, здесь данный бит не требуется и соответствующий разряд отсутствует в памяти (но он подразумевается). Значение порядка для упрощения вычислений и сравнения действительных чисел хранится в виде смещенного числа, т.е. к настоящему значению порядка перед записью его в память прибавляется смещение. Смещение выбирается так, чтобы минимальному значению поряд- ка соответствовал нуль. Например, для типа Double порядок занимает 11 бит и имеет диапазон от 2~ 1023 до 2 1023 , поэтому смещение равно Ю23 (10) = 1111111111 (2) . Наконец, бит с номером 63 указывает на знак числа. Таким образом, из вышесказанного вытекает следующий алгоритм для получения представления действительного числа в памяти ЭВМ: 1) перевести модуль данного числа в двоичную систему счисления; 2) нормализовать двоичное число, т.е. записать в виде М-2 Р, где М- мантисса (ее целая часть равна 1 (2)) и р - порядок, записанный в десятичной системе счисления; 3) прибавить к порядку смещение и перевести смещенный порядок в двоичную систему счисления; 4) учитывая знак заданного числа (0 - положительное; 1 - отрицательное), выписать его представление в памяти ЭВМ. Пример. Запишем код числа -312,3125. 1) Двоичная запись модуля этого числа имеет вид 100111000,0101. 2) Имеем 100111000,0101 = 1,001110000101 2 8 . 3) Получаем смещенный порядок 8 + 1023 = 1031. Далее имеем Ю31 (10) = = 10000000111 (2) . . 4) Окончательно

1) Прежде всего замечаем, что это код положительного числа, поскольку в разряде с номером 63 записан нуль. Получим порядок этого числа: 01111111110 (2) = 1022 (10) ; 1022 - 1023 = -1. 2) Число имеет вид 1,1100011-2“ 1 или 0,11100011. 3) Переводом в десятичную систему счисления получаем 0,88671875.

Источниками и носителями информации бывают сигналы любой природы: текст, речь, музыка и т.д. При этом хранение и перера­ботка инфор­мации в ее естест­венном виде неудобна, а иногда и невозможна. В таких слу­чаях применяется коди­рование. Ко­дом принято называть правило, по ко­торому со­поставляются различные алфавиты и слова (они появились в глу­бокой древно­сти в виде тайнописи, когда ими пользо­вались для засекречивания важ­ного со­общения ). Исторически пер­вый уни­версальный код, предназначенный для передачи со­обще­ний, связан с именем изобре­тателя телœеграфного аппарата Морзе и известен как аз­бука Морзе, где каждой букве или цифре соответст­вует своя последовательность из крат­ковременных, называемых точками, и длительных - тире сигналов, разделяе­мых пау­зами.

Компьютер, как из­вестно, может обрабатывать информацию, представ­ленную в чи­словой форме. Существуют различные способы записи чисел. Совокупность прие­мов записи и наименования чисел принято называть сис­темой счисления. Можно ука­зать два базовых класса, на которые разделя­ются системы счис­ления - пози­ционные и непо­зиционные . Примером по­зи­цион­ной системы счисле­ния явля­ется десятичная, непозиционной - римская сис­тема счисления.

В непозиционных системах количественное значение разряда определя­ется только его изображением и не зависит от его места (позиции ) в числе. В ней вводится ряд символов для представления базовых чисел, а остальные числа - результат их сложения и вычитания. Основные символы для обозна­чения десятичных разрядов в римской системе счисления: I – один, X – де­сять, C – сто, M – тысяча и их половины V – пять, L – пятьдесят, D – пять­сот. Натуральные числа записываются при помощи повторения этих цифр (к примеру, II – два, III – три, XXX – тридцать, CC – двести ). В случае если же боль­шая цифра стоит перед меньшей цифрой, то они складываются, если на­обо­рот – вычитаются (к примеру, VII – семь, IX – девять ). В непозиционных системах счисления не представля­ются дробные и отрица­тель­ные числа, по­этому нас будут интересовать только по­зицион­ные системы счисле­ния.

Система счисления принято называть позиционной, если значение числа в ней оп­ределяется как символами, принятыми в системе, так и положением (пози­цией ) этих символов в числе. Напри­мер:

123,45 = 1∙10 2 + 2∙10 1 + 3∙10 0 + 4∙10 –1 + 5∙10 –2 ,

или, в общем виде:

X (q) = x n -1 q n -1 + x n -2 q n -2 + … + x 1 q 1 + x 0 q 0 + x -1 q -1 + x -2 q -2 + … + x -m q –m .

Здесь X (q) – запись числа в системе счисления с основанием q ;

x I – натуральные числа меньше q, ᴛ.ᴇ. цифры;

n – число разрядов целой части;

m – число разрядов дробной части.

Записывая слева направо цифры число, мы получим закодированную за­пись числа в q -ичной системе счисления.

X (q) = x n-1 x n-2 x

1 x 0 , x -1 x -2 x -m .

В информатике, вследствие применения электронных средств вычисли­тельной техники, большое значение имеет двоичная система счисления, q = 2. На ранних этапах развития вычислительной техники арифметические операции с действительными числами производились в двоичной системе ввиду про­стоты их реализации в электронных схемах вычислительных машин. Отметим, что принци­п действия базовых элементов цифровых вычислительных машин осно­ван на двух устойчивых со­стояниях - проводится или нет электрический ток, или в каком направлении намагничен магнитный носитель и т.д. и для записи двоичного числа достаточно использовать только две цифры 0 и 1, соответствующих каждому из состояний. Таблица сложения и таб­лица ум­но­жения в двоичной системе будет иметь по четыре пра­вила. И для реализации поразрядной арифметики в компьютере потребуется вместо двух таблиц по сто правил в десятичной системе счисления две таб­лицы по четыре правила в двоичной.

0 + 0 = 0 0 * 0 = 0
0 + 1 = 1 0 * 1 = 0
1 + 0 = 1 1 * 0 = 0
1 + 1 = 10 1 * 1 = 1

Соответственно на аппаратном уровне вместо двухсот электронных схем – восœемь. При этом запись числа в двоичной системе счисления значи­тельно длиннее записи того же числа в десятичной системе счисления. Это гро­моздко и неудобно для использования, так как обычно человек может од­но­временно воспринять не более пяти-семи еди­ниц информации. По этой причине, на­ряду с двоичной системой счисления, в инфор­матике имеют хождение вось­меричная (в ней запись числа в три раза короче, чем в двоичной системе счисления ) и шестнадцатеричная системы счисления (в ней запись числа в четыре раза короче, чем в двоичной ).

Так как десятичная система для нас удобна и привычна, всœе арифмети­ческие действия мы делаем в ней, и преобразование чисел из произвольной недесятичной (q ≠ 10) на основе разложения по степеням q . Преобразование из десятичной в прочие системы счисления производится с помощью правил умножения и делœения. При этом целая и дробная части переводятся отдельно.

АЛФАВИТ 2-чной системы счисления: 0 1

АЛФАВИТ 8-ричной системы счисления: 0 1 2 3 4 5 6 7

АЛФАВИТ 10-чной системы счисления: 0 1 2 3 4 5 6 7 8 9

АЛФАВИТ 16-ричной системы счисления: 0 1 2 3 4 5 6 7 8 9 A B C D E F

Для перевода числа из десятичной системы счисления в любую другую систему счисления нужно делить «до упора» это число на основание той системы (основание системы - ϶ᴛᴏ количество символов в ее алфавите ), в которую переводим число, а потом прочесть остатки справа на­лево. Для пе­ревода числа из любой системы счисления в десятичную нужно умножить содержимое каждого разряда на основание системы в степени рав­ной поряд­ковому номеру разряда и всё сложить. Перевод числа из восьмеричной сис­темы в двоичную осуществляется заменой слева направо восьмеричной цифры тремя двоичными цифрами. Перевод числа из двоичной системы счисления в восьмеричную осуще­ствляется заменой справа налево каждой триады двоичных цифр на одну восьмеричную цифру.

Для перевода числа из десятичной системы счисления в любую другую систему счисления можно воспользоваться стандартной программой Каль­кулятор .

Набрав число и щелкнув на одном из переключателœей Hex , Dec , Oct или Bin , получим представление этого числа в соответствующей системе.

Как отмечалось, двоичная сис­тема счисле­ния, будучи естественной для ЭВМ, не удобна для восприятия чело­ве­ком. Большое количе­ство разря­дов двоичного числа по сравнению с соответ­ст­вующим десятичным, однооб­раз­ное чередование единиц и нулей является ис­точником ошибок и затруд­нений чтения двоичного числа. Для удобства записи и чтения двоичных чи­сел (но не для работы цифровых вычислительных машин! ), необходима бо­лее удоб­ная для записи и чтения система счис­ления. Такими являются сис­темы с ос­нова­нием 2 3 = 8 и 2 4 = 16, ᴛ.ᴇ. восьмеричная и шестнадцатеричная сис­темы счисления. Названные системы удобны тем, что в них, с одной сто­роны, обеспечивается чрезвычайно лег­кий перевод из двоичной сис­темы (а также обратный перевод ), т.к. основание системы – степень числа 2, с дру­гой - со­храняется компактный вид числа. Восьмеричная система широко ис­пользо­валась для записи машин­ных программ в ЭВМ 1 и 2 поколений. В на­стоящее время используется, в ос­нов­ном,

шестнадцатеричная система. Приведем пример соответствия шестна­дца­теричной и двоичной системы:

Пример для тетрад :

0000 = 0; 0001 = 1; 0010 = 2; 0011 = 3; 0100 = 4; 0101 = 5; 0110 = 6; 0111 = 7; 1000 = 8; 1001 = 9; 1010 = A; 1011 = B; 1100 = C; 1101 = D; 1110 = E; 1111 = F.

В ЭВМ используется представление информации в виде «машин­ного слова», длина которого равна некоторому числу бит, характерному для дан­ного типа ЭВМ. В ЭВМ первых поколений использовались ма­шинные слова различной длины, к примеру 45 бит и т.д., то есть не равные це­лому числу байт. В современных компьютерах длина слова обычно 4 или 8 байт (в пер­вых моделях персональных компьютеров было 1 или 2 байта ).

Слово в машинной памяти

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0