Понятие о системах счисления, используемых в ЭВМ

advertisement
А.В.Золотарюк. Фрагмент книги «Технология работы с Microsoft Office»
Понятие о системах счисления,
используемых в ЭВМ
Под системой счисления понимается способ представления
числовых данных с помощью некоторого ограниченного алфавита символов.
В вычислительной технике и программировании применяются только позиционные системы счисления. В таких системах
счисления позиция цифры в числе определяет ее вес, а общее количество символов алфавита – основание системы счисления.
Непозиционные системы (к ним, например, относится римская система счисления) из-за сложности и неформализуемости
в ЭВМ использоваться не могут.
Из позиционных систем счисления, кроме общепринятой десятичной, на различных этапах подготовки и выполнения программ на ЭВМ применяются двоичная, восьмеричная, и шестнадцатеричная системы счисления.
В двоичной системе счисления в качестве символов алфавита используются цифры 0 и 1, в восьмеричной - от 0 до 7, в
шестнадцатеричной - от 0 до 9, а также латинские литеры от А
до F для обозначения десятичных чисел от 10 до 15 (соответственно).
В общем виде любое число D в позиционной системе счисления может быть представлено следующим образом:
D = d p − 1 ⋅ b p − 1 + d p − 2 ⋅ b p − 2 + ... + d1 ⋅ b1 + d 0 ⋅ b 0 . + d − 1 ⋅ b − 1 + 
 + d− n ⋅ b− n =
где
p− 1
∑
di ⋅ bi ,
(1.2)
i= − n
di - цифра (символ алфавита) системы счисления;
. - знак (точка), отделяющий целую часть числа от дробной (в математике в качестве разделителя используется запятая);
b - основание системы счисления;
p - число цифр в целой части числа;
n - число цифр в дробной части числа;
bi - вес цифры на соответствующей i-й позиции числа.
1
А.В.Золотарюк. Фрагмент книги «Технология работы с Microsoft Office»
Перевод чисел из одной системы счисления в
другую
Для перевода чисел из одной системы счисления в другую
можно воспользоваться специальными таблицами соответствия,
фрагмент которой приведен в таблице 1.2. Однако такой подход
возможен только для простейших чисел.
Т абли ца 1. 2
0
1
2
3
4
5
6
7
8
9
10
0
1
2
3
4
5
6
7
8
9
A
0
1
2
3
4
5
6
7
10
11
12
0
1
10
11
100
101
110
111
1000
1001
1010
11
12
13
14
15
16
17
32
64
255
2002
В
С
D
E
F
10
11
20
40
FF
7D2
13
14
15
16
17
20
21
40
100
377
3722
Двоичное
Восьмеричное
Шестнадное
цатерич-
Десятичное
Двоичное
Восьмеричное
Шестнадное
цатерич-
Десятичное
Представление чисел в различных системах счисления
1011
1100
1101
1110
1111
10000
10001
100000
1000000
11111111
11111010010
В общем случае для перевода чисел из двоичной, восьмеричной или шестнадцатеричной системы счисления в десятичную систему может служить формула (1.2).
Пример 1.
Перевести двоичное число D2 = 101101.1 в десятичный вид:
D10 = 1 ⋅ 2 5 + 1 ⋅ 2 3 + 1 ⋅ 2 2 + 1 ⋅ 2 0. + 1 ⋅ 2 − 1 = 45.510
Пример 2.
Перевести восьмеричное число D8 = 27.6 в десятичный вид:
D10 = 2 ⋅ 81 + 7 ⋅ 8 0. + 6 ⋅ 8 − 1 = 23.7510
Пример 3.
Перевести шестнадцатеричное число D16 = А4С.4 в десятичный вид:
D10 = 10 ⋅ 16 2 + 4 ⋅ 161 + 12 ⋅ 16 0. + 4 ⋅ 16 − 1 = 2636.2510
2
А.В.Золотарюк. Фрагмент книги «Технология работы с Microsoft Office»
Для обратного перевода целых чисел из десятичной системы
счисления в шестнадцатеричную, восьмеричную или двоичную
системы можно воспользоваться алгоритмом последовательного
деления исходного числа на основание системы счисления, в которую переводится число. Полученный остаток после первого деления является младшим разрядом переведенного числа. Образовавшееся частное снова делится на это основание. Из остатка получают следующий разряд переведенного числа и т.д.
Пример 4.
Перевести методом последовательного деления десятичное
число D10 = 83 в двоичный, восьмеричный и шестнадцатеричный
виды:
D2 = 101 0011; D8 = 123; D16 = 53.
Пример 5.
Аналогичным образом можно убедиться, что десятичное
число D10 = 1723 изображается следующим образом:
а) в двоичном представлении - D2 = 110 1011 1011;
б) в шестнадцатеричном представлении - D16 = 6BB;
в) в восьмеричном представлении - D8 = 3273.
Перевод дробной части десятичных чисел в иные формы
представления выполняется методом последовательного умножения дробной части на основание системы счисления, в которую осуществляется перевод. Полученные целые числа, записанные в той же последовательности, будут составлять дробную
часть в переведенном числе.
Пример 6.
3
А.В.Золотарюк. Фрагмент книги «Технология работы с Microsoft Office»
Перевести десятичное число
D10 = 0.125 в двоичный вид:
Примечание.
Не всегда имеется возможность точного перевода чисел.
Хорошо переводятся дробные части чисел, кратные 0.2, 0.5, 0.25,
0.125 и т.п.
Имеют практическое значение и следующие правила перевода
чисел из двоичного представления в шестнадцатеричное и восьмеричное. Они базируются соответственно на использовании понятий тетрады - четырех бит и триады - трех бит.
Пример 7.
Перевести двоичное число D2 = 11111001010 в шестнадцатеричное и восьмеричное представление:
D2 = 0111 1100 1010 → D16 = 7CA
Тетрады
D2 = 011 111 001 010 → D8 = 3712
Триады
Для упрощения перевода двоичных чисел в десятичное представление целесообразно перевести их вначале в шестнадцатеричное представление, а затем, используя формулу (1.2), получить искомый результат.
Пример 8.
Перевести двоичное число D2 = 11 0001 1101 0110 в десятичное представление:
D16 = 3 1 D 6 ⇒ D10 = 3163 + 1162 + 13161 + 6160 = 12758
Для перевода шестнадцатеричных чисел в двоичное представление следует каждую шестнадцатеричную цифру записать
четырьмя двоичными. При переводе восьмеричных чисел в
двоичную форму восьмеричная цифра записывается тремя двоичными символами.
Пример 9.
4
А.В.Золотарюк. Фрагмент книги «Технология работы с Microsoft Office»
Перевести шестнадцатеричное число D16 = A0D4 в двоичное
представление:
D2 = 1010 0000 1101 0100
Пример 10.
Перевести восьмеричное число D8 = 175 в двоичное представление:
D2 = 1 111 101
Выполнение операций над данными
Непосредственно в памяти ЭВМ данные представляются в
двоичном виде, то есть с применением двоичной системы
счисления. Восьмеричная и шестнадцатеричная системы счисления служат в качестве промежуточных систем к общепринятой
десятичной системе.
В связи с этим представляет интерес, как реализуются арифметические операции над двоичными, восьмеричными и шестнадцатеричными данными. Принципиальных отличий от десятичной арифметики не существует. Только в двоичной арифметике
перенос единицы в старший разряд при сложении возникает значительно чаще (в восьмеричной – немного чаще, в шестнадцатеричной – реже).
5
А.В.Золотарюк. Фрагмент книги «Технология работы с Microsoft Office»
Правила выполнения
операций сложения и
умножения в двоичной
арифметике
0+ 0 = 0
0⋅0 = 0
0+1= 1
1+ 0 = 1
0 ⋅1 = 0
1⋅ 0 = 0
1⋅1 = 1
1 + 1 = 10
Фрагменты из правил выполнения арифметических операций в шестнадцатеричной
арифметике
0+ 0= 0
0− 0= 0
9 + 1= A
C − 3= 9
A + 6 = 10
F + 2 = 11
F − 1= E
14 − A = A
Пример 11.
Выполнить операции сложения и перемножения двух десятичных чисел 5 и 7 в двоичном виде:
D
Результат сложения
2 = 1100 ⇒ D10 = 12
Результат умножения
D2 = 100011 ⇒ D10 = 35
Пример 12.
Выполнить операции сложения и
читания над шестнадцатеричными
данными:
Пример 13.
Выполнить операции сложения и вычитания над восьмеричными данными:
6
вы-
А.В.Золотарюк. Фрагмент книги «Технология работы с Microsoft Office»
Представляет интерес операция сдвига над двоичными данными. Сдвиг влево на n двоичных разрядов соответствует умножению числа на 2n , а сдвиг вправо – делению числа на 2n.
Пример 14.
Умножить десятичное число 5 на 8:
D10 = 5 ⇒ D2 = 101
D10 = 8 = 23 ⇒ D2 = 1000
Произведение D2 = 10 1000 ⇒ D10 =40
Пример 15.
Разделить десятичное число 1536 на 64:
D10 = 1536 ⇒ D2 = 110 0000 0000
D10 = 64 = 26 ⇒ D2 = 100 0000
Частное D2 =1 1000 ⇒ D10 =24
Форматы представления данных
Для хранения целых чисел чаще всего отводится 2 или 4 байта.
Самый левый бит в двоичном представлении служит для указания знака числа1: 0 – для положительных чисел и 1 – для отрицательных чисел. Остальные разряды используются для задания
собственно чисел. Таким образом, максимально возможное число, хранимое в 2-х байтах, будет равным (215 – 1) = 32 767.
Для хранения вещественных чисел отводится, как правило, 4
или 6 байтов. Дробная часть от целой в таких числах разделяется
условной точкой.
Различают две формы представления вещественных чисел с фиксированной и с плавающей точкой.
Для чисел с фиксированной точкой условная точка располагается правее правого крайнего разряда (для целых чисел) или находится в другом месте.
Для чисел с плавающей точкой (рис. 1.3) используется представление чисел в экспоненциальной (полулогарифмической)
форме:
(1.3)
D = ± m ⋅ b± p ,
1
В ЭВМ находят применение также целые числа без знака – адреса памяти, используемые для доступа к хранимым в памяти данным, логические данные, принимающие значения «истина» или «ложь» и т.п.
7
А.В.Золотарюк. Фрагмент книги «Технология работы с Microsoft Office»
где
m - мантисса числа;
b - основание системы счисления;
р - порядок числа.
Рис. 1.4. Формат числа с плавающей точкой
Знак чисел по-прежнему занимает самый левый бит. Оставшиеся 7 бит левого байта служат для хранения модифицированного
порядка числа – так называемой характеристики. Суть модификации заключается в исключении отрицательных порядков. В качестве нулевого порядка принимается 4016 (6410). Отрицательные
порядки принимают значения от 3F16 до 0116 (от -110 до -6310) ,
положительные – от 4116 до 7F16 (от +110 до +6410). Оставшиеся
правые байты памяти занимает мантисса числа – его значащие
цифры.
Символьные данные занимают в памяти 1 байт 1. Конкретное
двоичное (шестнадцатеричное) представление символов зависит
от используемого принципа кодирования информации в ЭВМ, задаваемого кодовыми таблицами.
Использование дополнительного кода для
обработки числовых данных
С целью облегчения технической реализации арифметические
данные хранятся и обрабатываются в ЭВМ не в обычном - прямом двоичном коде, а в дополнительном коде.
Знаковый разряд чисел не претерпевает изменений. Тем же
остается и двоичное представление для положительных чисел –
1
Без учета дополнительной управляющей информации, например, о начертании символа (обычный, курсив, полужирный), их цвете и т.п.
8
А.В.Золотарюк. Фрагмент книги «Технология работы с Microsoft Office»
на этом интервале прямой и дополнительный двоичные коды полностью совпадают. По-разному кодируются только отрицательные числа.
Для получения дополнительного кода отрицательного числа
вначале выполняют инверсное отображение представления числа
в прямом коде - единицы в соответствующих разрядах числа,
кроме знакового, заменяют нулями и наоборот1. Затем к младшему разряду полученного кода прибавляют единицу.
Фрагмент соответствия десятичных данных двоичному представлению приведен в таблице 1.3.
Использование дополнительного кода дает ряд преимуществ.
И главное из них, что операции сложения и вычитания могут
быть реализованы одним и тем же устройством, называемым
сумматором. Кроме того, в дополнительном коде отсутствует
неоднозначность, и каждое последующее число строго больше
предыдущего на двоичную единицу. Это позволяет применять
одни и те же правила двоичной арифметики для всего диапазона
чисел - от (-2 n-1) до (+2 n-1 - 1), где n - число двоичных разрядов,
отведенных под представление числа.
Та бли ца 1 . 3
Двоичное 4-х битовое представление десятичных чисел
Десятичное
число
-8
-7
-6
-5
-4
-3
-2
-1
0
1
2
3
4
5
6
7
1
Прямой код
Обратный код
1111
1110
1101
1100
1011
1010
1001
1000 или 0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111 или 0111
0001
0010
0011
0100
0101
0110
0111
Дополнительный
код
1000
1001
1010
1011
1100
1101
1110
1111
0000
0001
0010
0011
0100
0101
0110
0111
Такое инверсное представление называется обратным кодом
9
А.В.Золотарюк. Фрагмент книги «Технология работы с Microsoft Office»
Пример 16.
Записать в дополнительном коде десятичное число D10 = - 83,
под которое отведено 2 байта памяти:
а) прямой двоичный код числа
D10 = + 83 ⇒ D2 = 0000 0000 0101 0011;
б) прямой двоичный код числа
D10 = - 83 ⇒ D2 = 1000 0000 0101 0011;
в) обратный код числа
D10 = - 83 ⇒ D2 = 1111 1111 1010 1100;
г) дополнительный код числа
D10 = - 83 ⇒ D2 = 1111 1111 1010 1101.
Пример 17.
Перевести двоичное число D2 = 1000 1100 0000 1010 из дополнительного кода в десятичное представление:
а) обратный код числа
D2 = 1000 1100 0000 1001; (вычли 1)
б) прямой двоичный код числа
D2 = 1111 0011 1111 0110;
в) прямой двоичный код положительного числа
D2 = 0111 0011 1111 0110;
г) десятичное преставление положительного числа
D10 = 214 + 213 +212 + 29 + 28 + 27 + 26 + 25 +24 + 22 + 21 =
=16384+8192+4096+512+256+128+64+32+16+4+2=29686
д) десятичное преставление исходного (отрицательного) числа
D2 = 1000 1100 0000 1010 ⇒ D10 = - 29686
Пример 18.
Выполнить в двоичном дополнительном коде операцию сложения двух десятичных чисел, хранимых в области памяти, равной 2 байтам:
1
D10
= − 5 ⇒ 1111 1111 1111 1011 (дополнительный код)
2
D10
= + 8 ⇒ 0000 0000 0000 1000 (дополнительный код)
рез
D10
= + 3 ⇒ 0000 0000 0000 0011 (результат сложения)
Примечание.
При сложении значащая единица была перенесена в область
знакового разряда. Там к ней прибавилась знаковая единица пер-
10
А.В.Золотарюк. Фрагмент книги «Технология работы с Microsoft Office»
вого числа. В итоге, единица из знакового разряда результата
была вытеснена за пределы разрядной сетки.
Кодирование символьной информации
В настоящее время наибольшее распространение для кодирования информации в ЭВМ находит кодовая таблица IBM. Она соответствует американскому стандартному коду обмена информации (American National Standard Code for Information Interchange) ASCII.
Кодовая таблица IBM состоит из основной таблицы ASCII
(символы с номерами от 010 до 12710) и ее расширения (символы с
номерами от 12810 до 25510).
Основная таблица ASCII содержит управляющие символы
операционной системы (коды от 0016 до 1F16), арабские цифры
(коды от 3016 до 3916), прописные латинские буквы (коды от 4116
до 5А16), строчные латинские буквы (коды от 6116 до 7А16), а также знаки препинания, математические символы и специальные
знаки.
Таблица расширения ASCII включает специфические символы
алфавитов европейских стран, греческие буквы, символы псевдографики, а также дополнительные специальные знаки и математические символы.
Поскольку в таблице ASCII отсутствуют символы многих национальных алфавитов, в том числе русского, на практике используют модифицированные кодовые таблицы, отличающиеся
только измененной таблицей расширения, в которой вместо редко
используемых знаков включаются требуемые символы.
Работая на ПЭВМ в среде операционной системы Windows,
пользователь легко получает доступ к этим таблицам - путем
переключения раскладки клавиатуры либо выбирая тот или иной
шрифт.
Операционная система предоставляет простой способ просмотра практически всех символов используемой кодовой таблицы1. В ситуации набора какой-либо текстовой информации вме1
Некоторые управляющие символы не имеют графического отображения или отображаются в виде знака
11
А.В.Золотарюк. Фрагмент книги «Технология работы с Microsoft Office»
сто нажатия на алфавитно-цифровую клавишу наберите комбинацию [Alt+номер символа]. Номер символа из кодовой таблицы
следует набирать в десятичном виде в правой цифровой части
клавиатуры. Например, для набора латинской строчной буквы b
(6216) нужно нажать комбинацию [Alt+98], символа § (1516) [Alt+21]. Для ввода украинской буквы Є (Е216) следует установить русскую раскладку клавиатуры и ввести комбинацию клавиш
[Alt+242].
На практике для включения в документы всевозможных экзотических символов данный способ не применяют, а пользуются
еще более простым - режимом вставки символов из отображаемых таблиц подключенных шрифтов.
Понятие о структуре программ ЭВМ
Абсолютно все программы, предназначенные для выполнения
на ЭВМ, независимо от того, на каком бы языке программирования они ни были первоначально разработаны, после трансляции
исходных текстов переводятся в двоичные машинные коды.
Структура машинных кодов программ определяется архитектурой ЭВМ и особенностями установленной операционной системы. Перечень используемых машинных кодов задается системой элементарных команд процессора, а их последовательность –
требуемым алгоритмом обработки данных.
Элементарные команды семейства микропроцессоров 80i86
занимают в памяти от одного до четырех байт. Самый левый
байт команды содержит двоичный код операции. Остальные
байты, как правило, задают значения операндов1. Операнды указывают на регистры или адреса памяти, где хранятся данные, а
также на их непосредственные значения.
Программа представляет собой совокупность сегментов: команды группируются в так называемом сегменте кодов, данные –
в сегменте данных и т.п. Сегменты выравниваются в памяти по
адресу параграфа – области, кратной 16. Величина отдельных
сегментов не может превосходить 64 Кб. Это, однако, не накла-
1
Однобайтовые машинные команды не имеют операндов, так как выполняют заданные, специфические функции обработки данных
12
А.В.Золотарюк. Фрагмент книги «Технология работы с Microsoft Office»
дывает ограничений на верхний предел памяти, занимаемой программой.
Для экономии памяти под запись программы адреса в командах указываются не абсолютные, а в виде смещений относительно начальных адресов сегментов.
Структура хранения программ в памяти ЭВМ наиболее полно
просматривается при написании их на языке Ассемблера. Этот
язык позволяет также учесть особенности строения ЭВМ. Тем самым, он обеспечивает создание высокоэффективных программ как по времени их выполнения, так и занимаемой ими памяти.
Вопросы на закрепление учебного материала
1. Дайте краткую характеристику позиционных систем счисления.
2. Чем вызвана необходимость использования двоичной, восьмеричной и шестнадцатеричной систем счисления?
3. Покажите на примерах суть алгоритма перевода целых чисел из десятичного представления в шестнадцатеричное, восьмеричное и двоичное представления.
4. Приведите пример перевода дробных частей десятичных
чисел в двоичное представление.
5. Дайте толкование терминов «триада» и «тетрада». Приведите примеры перевода данных из одной системы счисления в
другую на основе использования этих понятий.
6. Поясните правила представления чисел в прямом, обратном и дополнительном кодах.
7. В чем суть операции сдвига?
8. Нарисуйте форматы хранения целых и вещественных чисел
в памяти ЭВМ.
9. Оцените достоинства и недостатки используемых форматов
хранения целых и вещественных чисел в памяти ЭВМ.
10. Определите предпочтения в хранении вещественных чисел в форматах с фиксированной и с плавающей точкой.
11. Какие, на Ваш взгляд, достоинства и недостатки представления чисел в формате с плавающей точкой?
12. Как записать число в двоичном дополнительном коде?
Приведите примеры.
13
А.В.Золотарюк. Фрагмент книги «Технология работы с Microsoft Office»
13. Поясните предназначение кодовых таблиц. Каковы достоинства и недостатки кодовой таблицы ASCII?
14. Шестнадцатеричное представление числа с плавающей
точкой равно D16 = 41 00 00 FF. Переведите это число в десятичный вид.
15. При выполнении одной их команд программы произошел
сбой. Известны физические адреса памяти начала загрузки программы (A16=FC34A8) и команды, где произошел сбой
(A16=FC857С). Определите смещение этой команды относительно
начала программы.
14
Download