Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Лабораторная работа №1. Системы счисления. Преобразование чисел.
Лабораторная работа №2. Формы преобразования данных. Специальное кодирование.
Лабораторная работа №3. Работа и особенности логических элементов ЭВМ.
Лабораторная работа №4. Работа логических узлов ЭВМ.
Лабораторная работа №5. Основные характеристики процессоров различных архитектур.
Лабораторная работа №6. Архитектура системной платы.
Лабораторная работа №7. Внутренние интерфейсы системной платы.
Лабораторная работа №8. Интерфейсы периферийных устройств IDE, SCSI, SATA.
Лабораторная работа №9. Параллельные и последовательные порты и их особенности работы.
Лабораторная работа №10. Изучение команд микропроцессора КР580ИК80А - I8080
Лабораторная работа №11. Программирование арифметических и логических операций.
Лабораторная работа №12. Программирование портов вывода.
Рекомендации по проведению занятий
(кодирование информации)
Кодирование информации одна из базовых тем курса теоретических основ информатики, отражающая фундаментальную необходимость представления информации в какой-либо форме, т.е. кодировании информации. При этом слово «кодирование» понимается не в узком смысле кодирование как способ сделать сообщение непонятным для всех, кто не владеет ключом кода, а в широком как представление информации в виде сообщения на каком-либо языке.
Освещение данной темы в курсе информатики возможно под различными углами зрения и на различных уровнях. Самый простой подход состоит в рассмотрении понятия кодирования как представления информации в ознакомительном, общеобразовательном плане. Более продвинутый подход включает изучение теории кодирования, в том числе, ряда теорем с доказательствами. В данном практикуме мы ориентируемся на достаточно элементарные сведения о кодировании, имеющие общеобразовательное значение, и оставляем серьезное знакомство с теорией кодирования для специальных курсов.
По теме «кодирование информации» целесообразно проведение как семинарских, так и практических занятий (по решению задач). Весьма полезной является подготовка рефератов. Что же касается проведения лабораторных работ, то ниже предложена лишь одна работа, предусматривающая отработку навыков по частному способу кодирования представлению данных в памяти ЭВМ; это полезно для предварительного формирования знаний по вычислительной технике.
Контрольные вопросы
(кодирование информации)
1. Что такое кодирование информации в общем смысле?
2. Каково место кодирования среди процессов обработки информации?
3. Что называется знаком, абстрактным алфавитом? Приведите примеры.
4. Что такое код? Приведите примеры кодирования и декодирования.
5. Что называется избыточностью кода?
6. Какова избыточность естественных языков? Для чего она служит?
7. Приведите примеры искусственного повышения избыточности кода.
8. В чем состоит содержание 1-й и 2-й теорем Шеннона?
9. Какие коды называются двоичными? Приведите примеры.
10. Какой код используется для кодирования букв латинского алфавита букв персонального компьютера?
11. Какие коды используются в вычислительной технике для кодирования букв русского алфавита?
12. Как получить прямой и дополнительный коды целого числа?
13. Как представляются действительные числа в памяти ЭВМ?
14. Как кодируется графическая информация, если изображение черно-белое? цветное?
Темы семинарских занятий
(кодирование информации)
1. Понятие кодирование информации. Знак. Алфавит. История кодирования и шифрования.
2. Кодирование информации в вычислительной технике.
3. Основные теоремы теории кодирования и их следствия.
Задачи и упражнения
(кодирование информации)
1. Оцените число символов алфавита, кодируемого с помощью двоичных последовательностей длиной
а) 4 знака; б) 8 знаков; в) 12 знаков; г) 16 знаков.
2. С помощью кодовой таблицы ASCII декодировать следующее сообщение 01010100 01001111 00100000 01000010 01000101 00100000 01001111 01010010 00100000 01001110 01001111 01010100 00100000 01010100 01001111 00100000 01000010 01000101.
3. С помощью кодовой таблицы ASCII закодировать в последовательность шестнадцатеричных чисел слово COMPUTER.
4. Закодируйте и декодируйте любое текстовое сообщение с помощью кода Цезаря пронумеровав алфавит десятичными цифрами и заменяя буквы соответствующими им числами.
5. Закодируйте и декодируйте любое текстовое сообщение, усложнив код Цезаря добавлением к каждому последующему числу, заменяющему букву, некоторое постоянное число.
Представление данных в памяти ЭВМ
Краткие сведения
(представление данных в памяти ЭВМ)
Для представления информации в памяти ЭВМ (как числовой, так и не числовой) используется двоичный способ кодирования.
Элементарная ячейка памяти ЭВМ имеет длину 8 бит (байт). Каждый байт имеет свой номер (его называют адресом). Наибольшую последовательность бит, которую ЭВМ может обрабатывать как единое целое, называют машинным словом. Длина машинного слова зависит от разрядности процессора и может быть равной 16, 32 битам и т.д.
Для кодирования символов достаточно одного байта. При этом можно представить 256 символов (с десятичными кодами от 0 до 255). Набор символов персональных ЭВМ IBM PC чаще всего является расширением кода ASCII (American Standard Code for Information Interchange стандартный американский код для обмена информацией).
В некоторых случаях при представлении в памяти ЭВМ чисел используется смешанная двоично-десятичная «система счисления», где для хранения каждого десятичного знака нужен полубайт (4 бита) и десятичные цифры от 0 до 9 представляются соответствующими двоичными числами от 0000 до 1001. Например, упакованный десятичный формат, предназначенный для хранения целых чисел с 18-ю значащими цифрами и занимающий в памяти 10 байт (старший из которых знаковый), использует именно этот вариант.
Другой способ представления целых чисел дополнительный код. Диапазон значений величин зависит от количества бит памяти, отведенных для их хранения. Например, величины типа Integer (все названия типов данных здесь и ниже представлены в том виде, в каком они приняты в языке программирования Turbo Pascal. В других языках такие типы данных тоже есть, но могут иметь другие названия) лежат в диапазоне от 32768 (215) до 32767 (215 1) и для их хранения отводится 2 байта; типа LongInt в диапазоне от 231 до 231 1 и размещаются в 4 байтах; типа Word в диапазоне от 0 до 65535 (216 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, а если величиной типа LongInt, то его прямой код будет 00000000000000000000000000100101. Для более компактной записи чаще используют шестнадцатеричный код. Полученные коды можно переписать соответственно как 0025(16) и 00000025(16).
Дополнительный код целого отрицательного числа может быть получен по следующему алгоритму:
1) записать прямой код модуля числа;
2) инвертировать его (заменить единицы нулями, нули единицами);
3) прибавить к инверсному коду единицу.
Например, запишем дополнительный код числа (37), интерпретируя его как величину типа LongInt:
1) прямой код числа 37 есть 00000000000000000000000000100101;
2) инверсный код 11111111111111111111111111011010;
3) дополнительный код 11111111111111111111111111011011 или FFFFFFDB(16).
При получении числа по его дополнительному коду прежде всего необходимо определить его знак. Если число окажется положительным, то просто перевести его код в десятичную систему счисления. В случае отрицательного числа необходимо выполнить следующий алгоритм:
1) вычесть из кода числа 1;
2) инвертировать код;
3) перевести в десятичную систему счисления. Полученное число записать со знаком минус.
Примеры. Запишем числа, соответствующие дополнительным кодам:
а) 0000000000010111. Поскольку в старшем разряде записан нуль, то результат будет положительным. Это код числа 23.
б) 1111111111000000. Здесь записан код отрицательного числа. Исполняем алгоритм:
1) 1111111111000000(2) 1(2) = 1111111110111111(2); 2) 0000000001000000; 3) 1000000(2) = 64(10).
Ответ: 64.
Несколько иной способ применяется для представления в памяти персонального компьютера действительных чисел. Рассмотрим представление величин с плавающей точкой.
Любое действительное число можно записать в стандартном виде M × 10p, где 1 £ M < 10, p целое. Например, 120100000 = 1,201 × 108. Поскольку каждая позиция десятичного числа отличается от соседней на степень числа 10, умножение на 10 эквивалентно сдвигу десятичной запятой на одну позицию вправо. Аналогично деление на 10 сдвигает десятичную запятую на позицию влево. Поэтому приведенный выше пример можно продолжить: 120100000 = 1,201 × 108 = 0,1201 × 109 = 12,01 × 107¼. Десятичная запятая «плавает» в числе и больше не помечает абсолютное место между целой и дробной частями.
В приведенной выше записи M называют мантиссой числа, а p его порядком. Для того чтобы сохранить максимальную точность, вычислительные машины почти всегда хранят мантиссу в нормализованном виде, что означает, что мантисса в данном случае есть число, лежащее между 1(10) и 2(10) (1 £ M < 2). Основание системы счисления здесь, как уже отмечалось выше, число 2. Способ хранения мантиссы с плавающей точкой подразумевает, что двоичная запятая находится на фиксированном месте. Фактически подразумевается, что двоичная запятая следует после первой двоичной цифры, т.е. нормализация мантиссы делает единичным первый бит, помещая тем самым значение между единицей и двойкой. Место, отводимое для числа с плавающей точкой, делится на два поля. Одно поле содержит знак и значение мантиссы, а другое содержит знак и значение порядка.
Персональный компьютер IBM PC с математическим сопроцессором позволяет работать со следующими действительными типами (диапазон значений указан по абсолютной величине):
Тип |
Диапазон |
Мантисса |
Байты |
Real |
2,9 × 1039..1,7 × 1038 |
1112 |
6 |
Single |
1,5 × 1045..3,4 × 1038 |
78 |
4 |
Double |
5,0 × 10324..1,7 × 10308 |
1516 |
8 |
Extended |
3,4 × 104932..1,1 × 104932 |
1920 |
10 |
Покажем преобразование действительного числа для представления его в памяти ЭВМ на примере величины типа Double.
Как видно из таблицы, величина это типа занимает в памяти 8 байт. На рисунке показано, как здесь представлены поля мантиссы и порядка:
S |
Смещенный порядок |
Мантисса |
63 |
52 |
0 |
Можно заметить, что старший бит, отведенный под мантиссу, имеет номер 51, т.е. мантисса занимает младшие 52 бита. Черта указывает здесь на положение двоичной запятой. Перед запятой должен стоять бит целой части мантиссы, но поскольку она всегда равна 1, здесь данный бит не требуется и соответствующий разряд отсутствует в памяти (но он подразумевается). Значение порядка хранится здесь не как целое число, представленное в дополнительном коде. Для упрощения вычислений и сравнения действительных чисел значение порядка в ЭВМ хранится в виде смещенного числа, т.е. к настоящему значению порядка перед записью его в память прибавляется смещение. Смещение выбирается так, чтобы минимальному значению порядка соответствовал нуль. Например, для типа Double порядок занимает 11 бит и имеет диапазон от 21023 до 21023, поэтому смещение равно 1023(10) = 1111111111(2). Наконец, бит с номером 63 указывает на знак числа.
Таким образом, из вышесказанного вытекает следующий алгоритм для получения представления действительного числа в памяти ЭВМ:
1) перевести модуль данного числа в двоичную систему счисления;
2) нормализовать двоичное число, т.е. записать в виде M × 2p, где M мантисса (ее целая часть равна 1(2)) и p порядок, записанный в десятичной системе счисления;
3) прибавить к порядку смещение и перевести смещенный порядок в двоичную систему счисления;
4) учитывая знак заданного числа (0 положительное; 1 отрицательное), выписать его представление в памяти ЭВМ.
Пример. Запишем код числа 312,3125.
1) Двоичная запись модуля этого числа имеет вид 100111000,0101.
2) Имеем 100111000,0101 = 1,001110000101 × 28.
3) Получаем смещенный порядок 8 + 1023 = 1031. Далее имеем 1031(10) = 10000000111(2).
4) Окончательно
1 |
10000000111 |
0011100001010000000000000000000000000000000000000000 |
63 |
52 |
0 |
Очевидно, что более компактно полученный код стоит записать следующим образом: C073850000000000(16).
Другой пример иллюстрирует обратный переход от кода действительного числа к самому числу.
Пример. Пусть дан код 3FEC600000000000(16) или
0 |
01111111110 |
1100011000000000000000000000000000000000000000000000 |
63 |
52 |
0 |
1) Прежде всего замечаем, что это код положительного числа, поскольку в разряде с номером 63 записан нуль. Получим порядок этого числа: 01111111110(2) = 1022(10); 1022 1023 = 1.
2) Число имеет вид 1,1100011 × 21 или 0,11100011.
3) Переводом в десятичную систему счисления получаем 0,88671875.
Лабораторная работа
(представление данных в памяти ЭВМ)
Время выполнения 6 часов.
Задания к лабораторной работе
1. Переведите данное число из десятичной системы счисления в двоично-десятичную.
2. Переведите данное число из двоично-десятичной системы счисления в десятичную.
3. Зашифруйте данный текст, используя таблицу ASCII-кодов.
4. Дешифруйте данный текст, используя таблицу ASCII-кодов.
5. Запишите прямой код числа, интерпретируя его как восьмибитовое целое без знака.
6. Запишите дополнительный код числа, интерпретируя его как восьмибитовое целое со знаком.
7. Запишите прямой код числа, интерпретируя его как шестнадцатибитовое целое без знака.
8. Запишите дополнительный код числа, интерпретируя его как шестнадцатибитовое целое со знаком.
9. Запишите в десятичной системе счисления целое число, если дан его дополнительный код.
10. Запишите код действительного числа, интерпретируя его как величину типа Double.
11. Дан код величины типа Double. Преобразуйте его в число.
Вариант 1
1. а) 585(10); б) 673(10); в) 626(10).
2. а) 010101010101(2-10); б) 10011000(2-10); в) 010000010110(2-10).
3. IBM PC.
4. 8A AE AC AF EC EE E2 A5 E0.
5. а) 224(10); б) 253(10); в) 226(10).
6. а) 115(10); б) 34(10); в) 70(10).
7. а) 22491(10); б) 23832(10).
8. а) 20850(10); б) 18641(10).
9. а) 0011010111010110; б) 1000000110101110.
10. а) 578,375; б) 786,375.
11. а) 408E130000000000; б) C077880000000000.
Вариант 2
1. а) 285(10); б) 846(10); в) 163(10).
2. а) 000101010001(2-10); б) 010101010011(2-10); в) 011010001000(2-10).
3. Автоматизация.
4. 50 72 6F 67 72 61 6D.
5. а) 242(10); б) 135(10); в) 248(10).
6. а) 81(10); б) 40(10); в) 24(10).
7. а) 18509(10); б) 28180(10).
8. а) 28882(10); б) 19070(10).
9. а) 0110010010010101; б) 1000011111110001.
10. а) 363,15625; б) 487,15625.
11. а) C075228000000000; б) 408B9B0000000000.
Вариант 3
1. а) 905(10); б) 504(10); в) 515(10).
2. а) 010010010100(2-10); б) 001000000100(2-10); в) 01110000(2-10).
3. Информатика.
4. 50 72 6F 63 65 64 75 72 65.
5. а) 207(10); б) 210(10); в) 226(10).
6. а) 98(10); б) 111(10); в) 95(10).
7. а) 19835(10); б) 22248(10).
8. а) 18156(10); б) 28844(10).
9. а) 0111100011001000; б) 1111011101101101.
10. а) 334,15625; б) 367,15625.
11. а) C07C08C000000000; б) C0811B0000000000.
Формы представления данных
В ЭВМ используются следующие формы представления данных:
• числа с фиксированной точкой (запятой);
• числа с плавающей точкой (запятой);
• десятичные числа;
• символьные данные.
Числа с фиксированной точкой
При представлении числа Х в форме с фиксированной точкой указываются знак числа (sign X) и модуль числа (modX) в q-ичном коде. Иногда такую форму представления чисел называют естественной формой. Место точки (запятой) постоянно для всех чисел и в процессе решения задач не меняется. Знак положительного числа кодируется цифрой «0», а знак отрицательного числа цифрой «1».
Код числа в форме с фиксированной точкой, состоящий из кода знака и q-ичного кода его модуля, называется прямым кодом. Разряд прямого кода числа, в котором располагается код знака, называется знаковым разрядом кода. Разряды прямого кода числа, в которых располагается q-ичный код модуля числа, называются цифровыми разрядами кода. При записи прямого кода знаковый разряд располагается левее старшего цифрового разряда и обычно отделяется от цифровых разрядов точкой.
В общем случае разрядная сетка ЭВМ для размещения чисел в форме с фиксированной точкой показана на рисунке.
На рисунке показано п разрядов для представления целой части числа и r разрядов для дробной части числа.
a) фиксированная
При заданных п иr диапазон изменения модулей чисел, коды которых могут быть представлены в данной разрядной сетке, определяется неравенством
Использование формы с фиксированной точкой для представления смешанных (с целой и дробной частью) чисел в ЭВМ практически не встречается. Как правило, используются ЭВМ либо с дробной арифметикой (п=0), либо с целочисленной арифметикой (r=0).
Форма представления чисел с фиксированной точкой упрощает аппаратную реализацию ЭВМ, уменьшает время выполнения машинных операций, однако при решении задач на машине необходимо постоянно следить за тем, чтобы все исходные данные, промежуточные и окончательные результаты находились в допустимом диапазоне представления. Если этого не соблюдать, то возможно переполнение разрядной сетки, и результат вычислений будет неверным. От этих недостатков в значительной степени свободны ЭВМ, использующие форму представления чисел с плавающей точкой, или нормальную форму.
Числа с плавающей точкой
b) рис 14.б с плавающей точкой
В нормальной форме число представляется в виде произведения X=mqp
где т мантисса числа;
q основание системы счисления;
р порядок.
Для задания числа в нормальной форме требуется задать знаки мантиссы и порядка, их модули в q-ичном коде, а также основание системы счисления. Нормальная форма представления чисел неоднозначна, ибо взаимное изменение т и р приводит к плаванию точки (запятой). Отсюда произошло название формы представления чисел.
Для однозначности представления чисел в ЭВМ используется нормальная нормализованная форма, в которой положение точки всегда задается перед значащей цифрой мантиссы, т. е. выполняется условие
В общем случае разрядную сетку ЭВМ для размещения чисел в нормальной форме можно представить в виде, изображенном на рис. Разрядная сетка содержит:
Диапазон представления модулей чисел в нормальной нормализованной форме определяется следующим неравенством:
В конкретной ЭВМ диапазон представления чисел с плавающей точкой зависит от основания системы и числа разрядов для представления порядка.
При этом у одинаковых по длине форматов чисел с плавающей точкой с увеличением основания системы счисления существенно расширяется диапазон представляемых чисел.
Точность вычислений при использовании формата с плавающей точкой определяется числом разрядов мантиссы r. Она увеличивается с увеличением числа разрядов.
При представлении информации в виде десятичных многоразрядных чисел каждая десятичная цифра заменяется двоично-десятичным кодом. Для ускорения обмена информацией, экономии памяти и удобства операций над десятичными числами предусматриваются специальные форматы их представления: зонный (распакованный) и упакованный. Зонный формат используется в операциях ввода-операций. Для этого в ЭВМ имеются специальные команды упаковки и распаковки десятичных чисел.
4. Понятие о специальном кодировании чисел
Для хранения чисел и выполнения различных операций над ними их представляют различными кодами: прямым, обратным и дополнительным. Как уже отмечалось выше, для представления чисел со знаками в памяти ЭВМ используют прямой код. Для обозначения прямого кода числа Х используется запись вида [X ]^ .
Правило представления Q-ичного кода числа в прямом коде имеет вид:
где хi значение цифры в i-м разряде исходного кода.
Здесь старший бит несет информацию о знаке числа. Если он принимает значение 0, то знак числа «+» ; если значение 1 то знак числа «-».
Например, для двоичного кода
Х(2)= +11001011 |
[Х(2)]=0.11001011; |
Х(2)= -01101011 |
[Х(2)]=1.01101011. |
При представлении чисел в прямом коде реализация арифметических операций в ЭВМ должна предусматривать различные действия с модулями чисел в зависимости от их знаков. Так, сложение в прямом коде чисел с одинаковыми знаками выполняется достаточно просто. Числа складываются и сумме присваивается код знака слагаемых. Значительно более сложной является операция алгебраического сложения в прямом коде чисел с различными знаками. В этом случае приходится определять большее по модулю число, производить вычитание чисел и присваивать разности знак большего по модулю числа. Для упрощения выполнения операций алгебраического сложения в ЭВМ используются специальные коды, позволяющие свести эту операцию к операции арифметического сложения. В качестве специальных в ЭВМ применяются обратный и дополнительный коды. Они образуются из прямых кодов чисел, причем специальный код положительного числа равен его прямому коду.
Для обозначения обратного кода числа Х(q) используется запись вида [Х(q)]обр.
Правило представления q-ичного кода числа в обратном коде имеет вид:
Здесь инверсия цифры хi , определяемая из соотношения:
где: q основание системы счисления;
xj значение цифры в i-ом разряде исходного кода.
Для двоичной системы счисления, если х = 1, то и наоборот. Отсюда можно сформулировать частное правило образования обратного кода для отрицательных двоичных чисел.
Для преобразования прямого кода двоичного отрицательного числа в обратный код и наоборот необходимо знаковый разряд оставить без изменения, а в остальных разрядах нули заменить на единицы, а единицы на нули.
Например:
x(2)= +11011001, |
[X(2)] пр.=0.11011001, |
[X(2)] обр.= 0.11011001. |
x(2)= - 01011101, |
[X(2)] пр.=1.01011101, |
[X(2)] обр.= 1.10100010. |
Для обозначения дополнительного кода числа Х(q) используется запись вида [X(q)]доп . Правило представления q-ичного кода числа в дополнительном коде имеет вид:
Таким образом, для преобразования прямого кода q-ичного отрицательного числа в дополнительный необходимо образовать его в обратный код и в младший разряд добавить единицу.
Например, для двоичных чисел:
x(2)= +11011001, |
[X(2)] пр.= 0.11011001, |
[X(2)]доп.= 0.11011001. |
x(2)= - 01011101, |
[X(2)] пр.=1.01011101, |
[X(2)]обр.= 1.10100011. |
При выполнении операции сложения чисел, представленных специальными q-ичными кодами знаковые разряды участвуют в операции наряду с цифровыми разрядами. При этом цифровые разряды слагаемых складываются как модули чисел по правилам q-ичной арифметики. Знаковые разряды и цифры переноса из старшего цифрового разряда при любом основании системы счисления (q=2) складываются как одноразрядные двоичные коды. Если при этом формируется перенос из знакового разряда, то он имеет вес единицы младшего разряда q-m при использовании обратного кода и должен быть добавлен в младший разряд результата. При использовании дополнительного кода единица переноса из знакового разряда не принимается во внимание, т. е. отбрасывается.
Например:
При выполнении операции алгебраического сложения перед преобразованием прямых кодов слагаемых в специальные необходимо их выровнять по числу разрядов, если число разрядов слагаемых различно. Кроме того, в некоторых случаях может произойти переполнение разрядов сетки. Признаком переполнения разрядной сетки является следующая комбинация цифр в знаковых разрядах слагаемых и результата:
0+0 = 1
или
1+1 = 0
Результат сложения специальных кодов чисел при переполнении разрядной сетки является неверным.