Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Теоретические основы информатики. Учебно-методическое пособие

.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
Например: прямой код числа 224 (интерпретируем его как 8-битовое без
знака): 
(интерпретируем его как 16-битовое без знака):

;


.
Для декодирования, процесс выполняем в обратной последовательности.
§ 4.4. Кодирование в компьютере целых чисел со знаком
Для кодирования в компьютере целых чисел со знаком можно использовать три кода: прямой, дополнительный или обратный коды. Следует отметить, что в обоих случаях необходимо указывать количество бит, которое отводится под код числа. Если опять обратиться к PASCAL, то если отводится 2


    ), а если 4 байта, то


 

 

байта, то это тип Integer ( тип LongInt ( ).
Прямой код:
Схема нахождения прямого кода целого числа со знаком схожа с рассмотренной ранее, но при этом – старший разряд кода отводится под знак: «0» если число положительное, «1» если отрицательное.
Например: прямой код числа 34 (интерпретируем его как 8-битовое со
знаком):    А для -34:   

.

.
Дополнительный код:
Дополнительный код положительного целого числа совпадает с его прямым
кодом. А дополнительный код отрицательного целого числа получают по следующему алгоритму:
─ записать прямой код модуля числа; ─ инвертировать его (заменить «1» на «0», а «0» на «1»); ─ прибавить к инверсному коду единицу по правилам 2-ой С.С. Это и будет
дополнительный код.
Например: дополнительный код числа 35 (интерпретируем его как 8-битовое
со знаком):    А для -35: 

  


.


.

Для декодирования, процесс также выполняем в обратной последовательности. Следует только помнить, что старший разряд – знаковый.
Пример: по прямому коду определить число, интерпретируя его как 8­битовое целое со знаком.

     


;

     

31

.
Пример: по дополнительному коду определить число, интерпретируя его как 16-битовое целое со знаком.
 

;

 󰇛󰇜

   

    



.

Обратный код:
Обратный код целого числа со знаком определяется следующим образом:
для положительного числа обратный код совпадает с прямым и дополнительным, а для отрицательного числа получается следующим образом:
─ записать прямой код модуля числа; ─ инвертировать его (заменить «1» на «0», а «0» на «1»). Это и будет обратный
код.
Значит для числа -35:




.
Для декодирования обратного кода, алгоритм выполняем в обратном
порядке.
Пример: по обратному коду определить число, интерпретируя его как 8- битовое целое со знаком.
 
     

.

Практическая работа №8
Задание 8.1. Зашифруйте данный текст, используя таблицу ASCII-кодов:
«Я люблю свой город!», «Microsoft Word 97-2003».
Задание 8.2. Дешифруйте данный текст используя таблицу ASCII-кодов «91 AA AE E0 AE 20 91 A5 E1 E1 A8 EА 2E 20 84 A5 E0 A6 A8 E1 EC 21», «69 6E 74 65 6С 2D 43 65 6E 74 72 69 6E 6F».
Задание 8.3. Запишите прямой код числа интерпретируя его как 8-битное
целое без знаком:
  .
Задание 8.4. Запишите прямой, обратный и дополнительный код числа
интерпретируя его как 8-битное целое со знаком:
  
Задание 8.5. Запишите прямой, обратный и дополнительный код числа
интерпретируя его как 16-битное целое со знаком:
 

.

.
32
Задание 8.6. Запишите число в десятичной системе счисления, если дан его прямой (обратный, дополнительный) код:
1000 1111 0011 0011 0011 0010 1010 1100 1111 1111.
Самостоятельная работа №4
1. Зашифруйте данный текст, используя таблицу ASCII-кодов:
2. Дешифруйте данный текст, используя таблицу ASCII-кодов:
3. Запишите прямой, обратный и дополнительный код числа интерпретируя его
a) как 8-битное целое со знаком: b) как 16-битное целое со знаком:
4. Запишите число в десятичной системе счисления если дан его код (со знаком)
a) обратный код: b) прямой код: c) дополнительный код:
Вариант 1.
1. YAMAHA, Компьютеризация.
2. 4D 4F 44 45 4D, 88 AD E4 AE E0 AC A0 E2 A8 AA A0
3. a) 71, -94, 141 b) 16012, - 5423
4. a) 1001 0011, 1110 0000 10101 0001, 0001 0001. b) 0101 0101, 1011 1101, 0100 0100 0010 1110. c) 1010 0011, 1001 0110 1110 0011, 0110 0110.
1. Микропроцессор, Computer.
2. 50 52 49 4E 54, 43 6F 6D 70 75 74 65 72 20 49 42 4D 20 50 43.
3. a) 21, -47, -122 b) - 19777, 3498
4. a) 1111 1100, 0111 0111 1000 1000, 1010 1111. b) 0011 1101, 1000 1000, 0111 0000 1111 0011.
Вариант 2.
c) 1000 1111, 0101 0001 1111 0100, 1011 1110.
Вариант 3.
1. Винчестер, Pentium 100.
2. 91 A8 E1 E2 A5 AC A0 20E1 E7 A8 E1 AB A5 AD A8 EF, 42 69 6E 61 72 79.
3. a) 107, -79, 27
33
b) 8711, - 15723
4. a) 1111 1110, 0111 1111, 0101 1000 0000 1000. b) 0011 0011, 1011 1111 0000 0101, 1001 1001. c) 1101 1101, 1100 0011 1100 0011, 0110 0110.
1. Автоматизация, IBM PC.
2. 8A AE AC AF EC EE E2 A5 E0, 50 72 6F 67 72 61 5D.
3. a) 35, -65, -113 b) -7513, 12021
4. a) 1010 0001, 0001 1011, 1101 1000 0000 1000. b) 0010 1101, 1100 0111 0110 0100, 1111 1010. c) 1001 1110, 1110 1101 1010 0011, 0101 0100.
1. YAMAHA, Информатизация.
Вариант 4.
Вариант 5.
2. 4D 4F 44 45 4D, 91 A8 E1 E2 A5 AC A0 20E1 E7 A8 E1 AB A5 AD A8 EF.
3. a) 62, -85, 134 b) 13212, - 5063
4. a) 1101 0011, 1110 0110 10101 0101, 0001 1101. b) 0110 0101, 1010 1101, 0100 0110 0010 1000. c) 1011 0101, 1010 0110 1100 0011, 0100 0110.
Вариант 6.
1. Кодирование, Computer.
2. 50 72 6F 67 72 61 5D, 43 6F 6D 70 75 74 65 72 20 49 42 4D 20 50 43.
3. a) 27, -49, -102 b) - 19807, 3558
4. a) 1100 1100, 0110 0101 1000 1010, 1010 0111. b) 0011 0001, 1000 1011, 0100 0100 1101 0011. c) 1001 1110, 0100 0001 1111 0101, 1010 1111.
1. Дисковод, Pentium 100.
2. 88 AD E4 AE E0 AC A0 E2 A8 AA A0, 42 69 6E 61 72 79.
3. a) 110, -75, 25 b) 8541, - 15293
34
Вариант 7.
4. a) 1101 1110, 0101 1111, 0101 1001 0000 1001.
1 2 3 4 5 6 7
b) 0010 0010, 1011 1101 0011 0101, 1000 1011. c) 1101 1000, 1100 0111 1000 0011, 0100 1110.
1. Дисперсия, IBM PC.
2. 8A AE AC AF EC EE E2 A5 E0, 50 52 49 4E 54.
3. a) 31, -70, -111 b) -7093, 12991
4. a) 1010 0111, 0001 1111, 1101 1000 0000 1011. b) 0011 1110, 1100 1111 0110 0101, 1100 1010. c) 1001 1000, 1110 1001 1011 0011, 0111 0110.
Самостоятельная работа №5
Вариант 8.
1. Для передачи данных используется 8-битовый код, в котором младшие 7 бит –
это ASCII-код символа, а старший бит – контрольный бит чётности. Определите коды символов, которые были переданы без ошибок, а ошибочные замените нулями. Используя таблицу ASCII (A – 65, B – 66, …, Z - 90), определите правильно принятые символы. Попытайтесь восстановить известное английское слово, связанное с информатикой, которое пытались передать.
2. По каналу связи передаются сообщения, содержащие только 4 буквы: А, Б, В,
Г. Для кодирования букв А, Б, В используются 5-битовые кодовые слова, приведённые в задании. Для этого набора кодовых слов выполнено такое свойство: любые два слова из набора отличаются не менее чем в трёх позициях. Какое из перечисленных кодовых слов можно использовать для буквы Г, чтобы указанное свойство выполнялось для всех четырёх кодовых слов?
3. 7-битовый код Хэмминга для 4-битовых данных (с 3-мя контрольными битами)
строится следующим образом. Биты, номера которых равны степеням двойки – контрольные (это биты 1, 2 и 4, выделенные фоном), остальные биты – биты данных:
Номера остальных битов раскладываются на сумму степеней двойки, например: 5 = 4 + 1. Разложение справа даёт номера контрольных битов, которые проверяют этот бит данных. Так 5-й бит проверяется контрольными битами 1 и 4.
35
Значение контрольного бита вычисляется как бит чётности для всех
1
2 3 4 5 6
7
1 1 0 0
1 2 3 4 5 6 7
0 1 1 1 1 0 0
1 2 3 4 5 6 7
0 1 1 1 1 1 0
1 2 3 4 5 6 7
0 1 1 1 1 0 0
битов, которые он контролирует. Например, бит 1 контролирует биты 3, 5 и 7 (в их разложении есть 1). Пусть четверка данных – это 1100:
Тогда контрольный бит 1 – это бит чётности для цепочки 110, он равен 0, поскольку число единиц в блоке – чётное.
Задание: используй код Хэмминга, постройте кодовые слова для заданных данных. *Постройте таблицу кодов Хэмминга для всех двоичных кодов, соответствующих числам от 0 до 15. Для этого используйте электронные таблицы (Excel или OpenOffice.Calc). Для вычисления бита чётности примените функцию вычисления остатка от деления, которая в Excel называется ОСТАТ, а
в OpenOffice.Calc – MOD.
4. Код Хэмминга позволяет исправить одну ошибку и обнаружить две.
Признаком ошибки (или ошибок) служит несовпадение контрольных битов со значением, которые вычислено по полученным битам данных. Например, пусть приняты данные
По битам данных (с номерами 3, 5, 6 и 7) рассчитываем значения контрольных битов, которые получаются при безошибочной передаче:
бит 1 = (бит 3 + бит 5 + бит 7) mod 2 = (1 + 1 + 0) mod 2 = 0 бит 2 = (бит 3 + бит 6 + бит 7) mod 2 = (1 + 1 + 0) mod 2 = 0 ≠ 1 бит 4 = (бит 5 + бит 6 + бит 7) mod 2 = (1 + 1 + 0) mod 2 = 0 ≠ 1
Видим, что полученные значения контрольных битов 2 и 4 не совпадают с вычисленными, поэтому при передаче были ошибки. Если предположить, что была только одна ошибка, то номер ошибочного бита вычисляется как сумма номером несовпавших контрольных битов, в данном примере это 2 + 4 = 6. Таким образом, 6-й бит принят неверно, исправленные данные выглядят так:
Это код Хэмминга для числа 11002 = 12. Задание: устройство приняло приведенные в задании 7-битовые блоки, в каждом из которых не более одной ошибки. Восстановите правильные данные и запишите в десятичной системе счисления числовую последовательность, которую пытались передать. * Используя электронные таблицы, автоматизируйте исправление ошибок: при вводе 7-битового кода Хэмминга в некоторой ячейке должен появляться номер ошибочного бита или 0, если ошибок нет.
36
Вариант 1.
1. 11010100 01010111 11001001 11010100 11010100 01000101 11010010
2. А – 11111, Б – 11000, В – 00100, Г – ?
1) 00000 2) 00011 3) 11100 4) не подходит ни одно из указанных
слов
3. 10, 12
4. 1100001 0101110 1001101 0001001
Вариант 2.
1. 01010011 01001111 11001100 01000001 01010010 11001001 01010011
2. А – 00110, Б – 11000, В – 10011, Г – ?
1) 01101 2) 01001 3) 00011 4) не подходит ни одно из указанных
слов
3. 5, 15
4. 0101001 1010011 0100111 1011000
Вариант 3.
1. 11010111 11001001 11001110 01000100 01001111 11010111 01010011
2. А – 11100, Б – 00110, В – 01011, Г – ?
1) 11001 2) 10010 3) 10001 4) не подходит ни одно из указанных
слов
3. 4, 11
4. 1101010 0001100 1111000 0110111
Вариант 4.
1. 01000111 01001111 11001111 11000111 11001100 11000101
2. А – 01101, Б – 00110, В – 10001, Г – ?
1) 11111 2) 11010 3) 01000 4) не подходит ни одно из указанных
слов
3. 6, 10
4. 1111011 0011100 0011000 1101101
Вариант 5.
1. 11011001 01000001 01001110 11000100 11000101 11011000
2. А – 00101, Б – 01011, В – 10110, Г – ?
1) 10000 2) 01110 3) 11000 4) не подходит ни одно из указанных
слов
3. 7, 13
4. 0011010 1100000 1100100 0000011
Вариант 6.
1. 01000001 11001101 01000001 01011010 11001111 11001110
2. А – 01010, Б – 11001, В – 10100, Г – ?
1) 00000 2) 00111 3) 01101 4) не подходит ни одно из указанных
слов
37
3. 8, 14
63
62
52
51
0
знак
числа
смещённый порядок
11 бит
мантисса
52 бита
4. 0001001 0001011 0101101 0101011
§ 4.5. Кодирование в компьютере вещественных чисел
Основной формой кодирования вещественных чисел в компьютере является двоичная нормализованная. Любое вещественное число можно представить в

нормализованном двоичном виде:  
хранить в памяти компьютера необходимо все составляющие нормализованной формы (знак числа, мантиссу, знак порядка и порядок), что требует несколько
ячеек памяти. Например в Pascal, числа типа Real занимают 6 байтов (  
  

).
Рассмотрим более подробно кодирование вещественных чисел на примере
типа Double (   

  

). Величина этого типа занимает в памяти 8 байт, т.е. 64 ячейки, которые распределяют поля мантиссы и порядка следующим образом:
. При этом записывать и

Старший бит с номером 63 отводится под знак числа (1 - отрицательное, 0 положительное). Следующие 11 бит хранят смещенный порядок числа. Мантисса же занимает младшие 52 бита.
Для того чтобы сохранить максимальную точность при кодировании
мантиссу записывают в нормальном виде, это означает, что 
. Таким
образом, в мантиссе, целая часть всегда равна 1, поэтому её не требуется записывать в ячейки памяти (но она подразумевается). Значение же порядка для упрощения вычислений (нет знака) и сравнения действительных чисел хранят в виде смещенного порядка, т.е. к настоящему значению порядка перед записью его в память прибавляют смещение. Смещение выбирается так, чтобы минимальному значению порядка соответствовал нуль. Для типа Double смещение равно

.
Алгоритм кодирования вещественного числа в памяти компьютера включает
следующие этапы:
─ перевести модуль данного числа в 2-ую С.С.; ─ привести полученное двоичное число к нормальному виду, т.е. нормализовать
с условием, что целая часть мантиссы равна 1 (порядок оставляем в 10-ой С.С.);
─ определяем смещенный порядок и переводим его в 2-ую С.С.; ─ учитывая знак заданного числа, записать представление числа в памяти
компьютера.
Пример: запишите код числа –312,3125.
▪ Двоичная запись модуля числа имеет вид:

38
;
▪ Приводим к нормальному виду:
63
62
52
51
0
1 1 0 0 0 0 0 0 0 1 1 1 0 0 1 1 1 0 0 0 0 1 0
1
 
63
62
52
51
0
0 0 1 1 1 1 1 1 1 1 1 0 1 1 0 0 0 1 1 0 0 0 0
0
 
Прямой код
Обратный код
Дополнительный код
«+»
0 число
0 число
0 число
«»
1 число2 (р-1)числор
1 (инвертир.число)2
(р-1) (дополн. до р-1)р
1(инвертир. число + 1)2 (р-1) (дополн. до р-1, кроме младшего разряда;
  
;
▪ Находим смещенный порядок:
   
;
▪ Записываем код числа:
Более компактно полученный код будет выглядеть в 16-ой С.С., для этого отделяем группы по 4 символа:


.
Для декодирования кода вещественных чисел необходимо шаги алгоритма
выполнить в обратной последовательности.
Пример: по коду 
▪ Записываем 2-ый код числа: 
определить число.

▪ Находим порядок числа:
,    ;
▪ Нормальный вид числа имеет вид:
   или 
;
▪ Переводим в 10-ую С.С.:


.
§ 4.6. Кодирование целых чисел со знаком
Прямой, обратный и дополнительный коды можно рассматривать в
произвольной С.С., однако необходимо внести некоторые дополнения.
Прямой код числа в p-ой С.С. находится по алгоритму схожему с рассмотренным ранее, с одной лишь разницей: 0 – положительное, (p-1) ­отрицательное:


󰇛  󰇜


 

При определении обратного и дополнительного кода процесс инвертирования заменяем дополнением каждой цифры до (p-1), а все остальные этапы алгоритмов сохраняются.
39
младший разряд – до р)р = = обратный код + 1
Рассмотрим пример: найти прямой, обратный и дополнительный коды чисел:
: 
󰇛  󰇜󰇛  󰇜󰇛  󰇜󰇛  󰇜󰇛  󰇜󰇛  󰇜
 : 
󰇛  󰇜󰇛  󰇜󰇛  󰇜󰇛  󰇜󰇛  󰇜󰇛  󰇜

 


 






Практическая работа №9
Задание 9.1. Запишите код действительного числа, интерпретируя его как
величину типа Double: 84,15625 -681,375 -974,5.
Задание 9.2. Дан код величины типа Double. Преобразуйте его в число: 4075E28000000000 C07E980000000000 CO5DCA0000000000.
Задание 9.3. Запишите прямой, обратный и дополнительный коды для чисел:
0,28635710 -0,7722548 -0,C0A1B316 -0,2011023
Задание 9.4. Определите число по его коду (прямому, обратному и дополнительному):
3022113 FE0B2C5 9453701 0101101
Задание 9.5. Переведите десятичные числа из прямого кода в дополнительный:
0882754 9010209 9283746 9030501
Задание 9.6. Переведите 16-ричные числа из дополнительного кода в прямой:
FA1B2BC F1D560D 00E6C51 094C412
Самостоятельная работа №6
1. Запишите код действительного числа, интерпретируя его как величину типа
Double:
2. Дан код величины типа Double. Преобразуйте его в число:
3. Запишите прямой, обратный и дополнительный коды для чисел:
4. Определите число по его коду (прямому, обратному и дополнительному):
40
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]