АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Лабораторная работа № 3

Читайте также:
  1. II. Работа в базе данных Microsoft Access
  2. II. Работа с лексическим составом языка
  3. II. Работа с текстом
  4. IV. Культурно-просветительская работа.
  5. IV. Работа с текстом
  6. V1: Договорная работа с поставщиками и посредниками
  7. Автором опыта выделен алгоритм формирования умения работать с моделями.
  8. Безопасность при погузочно-разгрузочных работах.
  9. Безопасность труда при эксплуатации установок и сосудов работающих под давлением
  10. Бумаги или работа?
  11. В 1. Физическая сущность сварочной дуги. Зажигание дуги. Термоэлектронная и автоэлектронная эмиссии. Работа выхода электрона.
  12. В Казахстане разработали интернет-алфавит казахского языка на латинице

КОДИРОВАНИЕ ИНФОРМАЦИИ.

ПРЕДСТАВЛЕНИЕ ДАННЫХ В ПАМЯТИ ЭВМ

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

Порядок работы:

1. Зашифруйте данный текст, используя таблицу ASCII-кодов.

2. Дешифруйте данный текст, используя таблицу ASCII-кодов.

3. Запишите прямой код числа, интерпретируя его как восьмибитовое целое без знака.

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

5. Запишите прямой код числа, интерпретируя его как шестнадцатибитовое це­лое без знака.

6. Запишите дополнительный код числа, интерпретируя его как шестнадцати­битовое целое со знаком.

7. Запишите в десятичной системе счисления целое число, если дан его допол­нительный код.

8. Запишите код действительного числа, интерпретируя его как величину типа Double.

9. Дан код величины типа Double. Преобразуйте его в число.

 

& краткие сведения

I. Для представления информации (как числовой, так и нечисло­вой) в памяти ЭВМ используется двоичный способ кодирования.

Элементарная ячейка памяти ЭВМ имеет длину 8 бит (байт). Каждый байт имеет свой номер (его называют адресом). Наибольшую последовательность бит, которую ЭВМ может обрабатывать как единое целое, называют машинным словом. Длина машинного слова зависит от разрядности процессора и может быть равной 16, 32 битам и т.д.

Для кодирования символов достаточно одного байта. При этом можно предста­вить 256 символов (с десятичными кодами от 0 до 255). Набор символов персо­нальных ЭВМ IBM PC чаще всего является расширением кода ASCII (American Standart Code for Information Interchange — стандартный американский код для обмена информацией).

В некоторых случаях при представлении в памяти ЭВМ чисел используется сме­шанная двоично-десятичная «система счисления», где для хранения каждого де­сятичного знака нужен полубайт (4 бита) и десятичные цифры от 0 до 9 представ­ляются соответствующими двоичными числами от 0000 до 1001. Например, упако­ванный десятичный формат, предназначенный для хранения целых чисел с 18 зна­чащими цифрами и занимающий в памяти 10 байт (старший из которых знако­вый), использует именно этот вариант.

II. Другой способ представления целых чисел — дополнительный код. Диапазон значений величин зависит от количества бит памяти, отведенных для их хране­ния. Например, величины типа

Integer (все названия типов данных здесь и ниже представлены в том виде, в каком они приняты в языке программирования Turbo Pascal, в других языках такие типы данных тоже есть, но могут иметь другие названия) лежат в диапазоне от -32768 (-215) до 32767 (215 - 1), и для их хранения отводится 2 байта

типа Longlnt — в диапазоне от -231 до 23' - 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

                               

 

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

- число переводится в двоичную систему счисления,

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

Например, если число 3710 = 1001012 объявлено величиной типа Integer, то его прямым кодом будет 0000000000100101, а если величиной типа Longlnt, то его прямой код будет 00000000000000000000000000100101.

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

Дополнительный код целого отрицательного числа может быть получен по следующему алгоритму:

1) записать прямой код модуля числа

2) инвертировать его (заменить единицы нулями, нули — единицами)

3) прибавить к инверсному коду единицу.

Например, запишем дополнительный код числа (-37), интерпретируя его как величину типа Longlnt:

1) прямой код числа 37 есть 00000000000000000000000000100101

2) инверсный код 11111111111111111111111111011010

3) дополнительный код 11111111111111111111111111011011 или FFFFFFDB(16).

 

III. При получении числа по его дополнительному коду прежде всего необходимо определить его знак. Если число окажется положительным, то просто перевести его код в десятичную систему счисления. В случае отрицательного числа необходимо выполнить следующий алгоритм:

1) вычесть из кода числа 1

2) инвертировать код

3) перевести в десятичную систему счисления. Полученное число записать со знаком минус.

Примеры. Запишем числа, соответствующие дополнительным кодам:

а) 0000000000010111. Поскольку в старшем разряде записан нуль, то результат будет положительным. Это код числа 23

б) 1111111111000000. Здесь записан код отрицательного числа. Исполняем алгоритм:

1) 11111111110000002 - 12= 11111111101111112

2) 0000000001000000

3) 10000002= 6410.

Ответ: -64.

 

IV. Несколько иной способ применяется для представления в памяти персонального компьютера действительных чисел. Рассмотрим представление величин с плавающей точкой.

Любое действительное число можно записать в стандартном виде М*10р, где 1 <М< 10, р — целое. Например, 120100000 = 1,201*108. Поскольку каждая позиция десятичного числа отличается от соседней на степень числа 10, умножение на 10 эквивалентно сдвигу десятичной запятой на одну позицию вправо. Аналогично деление на 10 сдвигает десятичную запятую на позицию влево. Поэтому приведенный выше пример можно продолжить: 120100000 = 1,201*108= 0,1201*109= 12,01*107... Десятичная запятая «плавает» в числе и больше не помечает абсолютное место между целой и дробной частями.

В приведенной выше записи М называют мантиссой числа, а р — его порядком. Для того чтобы сохранить максимальную точность, вычислительные машины почти всегда хранят мантиссу в нормализованном виде, что означает, что мантисса в данном случае есть число, лежащее между 110 и 210 (1 <М< 2). Основание системы счисления здесь, как уже отмечалось выше, — число 2. Способ хранения мантиссы с плавающей точкой подразумевает, что двоичная запятая находится на фиксированном месте. Фактически подразумевается, что двоичная запятая следует после первой двоичной цифры, т.е. нормализация мантиссы делает единичным первый бит, помещая тем самым значение между единицей и двойкой. Место, отводимое для числа с плавающей точкой, делится на два поля. Одно поле содержит знак и значение мантиссы, а другое содержит знак и значение порядка.

Персональный компьютер IBM PC позволяет работать со следующими действительными типами (диапазон значений указан по абсолютной величине):

Тип Диапазон Мантисса Байты
Real 2,9*10-39...l,7*1038 11-12  
Single l,5*10-45...3,4*1038 7-8  
Double 5,0*10-324...l,7*10308 15-16  
Extended 3,4*10-4932...1,1*104932 19-20  

Покажем преобразование действительного числа для представления его в памя­ти ЭВМ на примере величины типа Double.

Как видно из таблицы, величина это типа занимает в памяти 8 байт. На рисунке показано, как здесь представлены поля мантиссы и порядка:

S Смещенный порядок Мантисса

63 52 0

Можно заметить, что старший бит, отведенный под мантиссу, имеет номер 51, т. е. мантисса занимает младшие 52 бита. Черта указывает здесь на положение дво­ичной запятой. Перед запятой должен стоять бит целой части мантиссы, но по­скольку она всегда равна 1, здесь данный бит не требуется и соответствующий разряд отсутствует в памяти (но он подразумевается). Значение порядка для упро­щения вычислений и сравнения действительных чисел хранится в виде смещенного числа, т.е. к настоящему значению порядка перед записью его в память прибавля­ется смещение. Смещение выбирается так, чтобы минимальному значению порядка соответствовал нуль. Например, для типа Double порядок занимает 11 бит и имеет диапазон от 2-1023 до 21023, поэтому смещение равно 102310 = 13111111112. Наконец, бит с номером 63 указывает на знак числа.

алгоритм для получения представления действительного числа в памяти ЭВМ:

1) перевести модуль данного числа в двоичную систему счисления

2) нормализовать двоичное число, т.е. записать в виде М*2Р, где М— мантисса (ее целая часть равна 12 и р — порядок, записанный в десятичной системе счисления

3) прибавить к порядку смещение и перевести смещенный порядок в двоичную систему счисления

4) учитывая знак заданного числа (0 — положительное 1 — отрицательное), выписать его представление в памяти ЭВМ.

Пример. Запишем код числа —312,3125.

1) Двоичная запись модуля этого числа имеет вид 100111000,0101.

2) Имеем 100111000,0101 = 1,001110001001*28.

3) Получаем смещенный порядок 8 + 1023 = 1031. Далее имеем 103110 = 100000001112

4) Окончательно

 

     

63 52 0

Очевидно, что более компактно полученный код стоит записать следующим образом: С07385000000000016.

 

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

Пример. Пусть дан код 3FEC60000000000016 или

 

     

 

1) Прежде всего, замечаем, что это код положительного числа, поскольку в разря­де с номером 63 записан нуль.

2) Получим порядок этого числа: 011111111102 = 102210 1022 - 1023 = -1.

3) Число имеет вид 1,1100011-2-1 или 0,11100011.

4) Переводом в десятичную систему счисления получаем 0,88671875.

? Задачи и упражнения

№ 1

Мальчик заменил каждую букву своего имени ее номером в алфавите. Получилось 46151. Как зовут мальчика?

№ 2

Зашифрованная пословица.

Чтобы рубить дрова, нужен 14, 2, 3, 2, 7, а чтобы полить ого­род— 10, 4, 5, 1, 6.

Рыбаки сделали во льду 3, 7, 2, 7, 8, 9, 11 и стали ловить рыбу.

Самый колючий зверь в лесу — это 12, 13.

А теперь прочитайте пословицу:

1, 2, 3, 4, 5, 1, 6

7, 8, 9, 10, 11

9, 4, 7, 4, 13, 12, 14

№ 3

Заменяя каждую букву ее порядковым номером в алфавите, зашифруйте фразу:
«Я УМЕЮ КОДИРОВАТЬ ИНФОРМА­ЦИЮ».

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

№ 4

Дана кодировочная таблица (первая цифра кода номер строки, вторая — номер столбца)

                   
  А Б В г д Е Ё Ж  
  И К Л м Н   П Р С
  Т У Ф х Ц Ч Ш щ Ъ
  ы Ь “” Э ю я _ . , ?
  : ; - ! »        

Рис. 1.6

С помощью этой кодировочной таблицызашифруйте фразу:

Я УМЕЮ РАБОТАТЬ С ИНФОРМАЦИЕЙ! А ТЫ?

№ 5

Используя кодировочную таблицу на рис. 1.6, расшифруйте текст:
25201538350304053835111503040038.

№ 6

«Шифры замены». Каждая буква алфавита может быть заме­нена любым числомиз соответствующего столбика кодиро­вочной таблицы.

А Б В Г Д Е Ж   И К Л М Н   П Р
                               
                               
                               
               
С Т У Ф X Ц Ч Ш Щ Ъ Ы Ь Э Ю Я
                             
                             
                             
                                             

Рис 1.7

                                         
                                         
                                         

Какие сообщения закодированы с помощью этой таблицы?

 

 

№ 7

«Шифр Цезаря»

Этот шифр реализует следующее преобразо­вание текста: каждая буква исходного текста заменяется тре­тьей после нее буквой в алфавите, который считается напи­санным по кругу. Используя этот шифр, зашифруйте слова
ИНФОРМАЦИЯ, КОМПЬЮТЕР, ЧЕЛОВЕК.

 

№ 8

Расшифруйте слово НУЛТХСЁУГЧЛВ, закодированное с помощью шифра Цезаря (см. задачу №8).

№ 9

«Шифр Виженера».

Этот шифр представляет шифр Цезаря с переменной величиной сдвига. Величину сдвига задают клю­чевым словом. Например, ключевое слово ВАЗА означает сле­дующую последовательность сдвигов букв исходного текста: 3 1 9 1 3 1 9 1 и т.д. Используя в качестве ключевого слово ВАГОН, закодируйте слова: АЛГОРИТМ, ПРАВИЛА, ИН­ФОРМАЦИЯ.

№ 10

Слово НССРХПЛСГХСА получено с помощью шифра Виженера (см. задачу № 17) с ключевымсловом ВАЗА.Восстанови­те исходное слово.

№ 11

«Шифр перестановки».

Кодирование осуществляется переста­новкой букв в слове по одному и тому же общему правилу. Восстановите слова и определите правило перестановки: ЛБКО, ЕРАВШН, УМЫЗАК, АШНРРИ, РКДЕТИ.

№ 12

Какому или каким из перечисленных ниже слов соответству­ет код Х0:$=+0=? Слова: орнамент, доминион, рифление, строение, смекалка.

№ 13

Правило кодирования: после каждой гласной буквы вставля­ется буква А, а после согласной — Т. Расшифруйте слова:


1 | 2 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.011 сек.)