ПРАКТИЧЕСКАЯ РАБОТА № 1
(Информатика и ИКТ)
Тема: «Измерение количества информации.
Кодирование символьной информации.
Обработка данных».
Цель работы: Освоение навыков расчета информационного объема текстового сообщения, кодирования текстовой информации, представление информации в различных системах счисления («2», «8», «16») аналитическим и автоматизированным способами.
Теоретическое введение:
В одном байте (8 бит) можно закодировать значение одного символа из 256 возможных.
Информация в ЭВМ кодируется, как правило, в двоичной системе счисления. Система счисления – это способ представления любого числа с помощью символов, имеющих определенные количественные значения и называемых цифрами. Различают позиционные и непозиционные системы счисления. В непозиционной системе счисления цифры не меняют своего количественного значения при изменении их расположения в числе. Примером такой системы является римская система счисления.
В позиционной системе счисления количественное значение каждой цифры зависит от её места (позиции) в числе. Количество s различных цифр, употребляемых в позиционной системе, называется ее основанием. Эти цифры обозначают s целых чисел, обычно 0, 1, ..., (s-1). В десятичной системе используются десять цифр: 0, 1,2, 3,4,5,6,7,8,9; эта система имеет основанием число десять.
В общем случае в позиционной системе с основанием s любое число х может быть представлено в виде полинома от основания s:
х=rsr + r-1 s r-1 +….+ 1s1 + 0s0 +-1s-1 + -2s-2 + …
где в качестве коэффициентов i могут стоять любые из s цифр, используемых в системе счисления.
Принято представлять числа в виде соответствующей (2.1) последовательности цифр:
x=.r r-1 …. 1 0,-1-2 …
В этой последовательности запятая отделяет целую часть числа от дробной (коэффициенты при положительных степенях, включая нуль, от коэффициентов при отрицательных степенях). Запятая опускается, если нет отрицательных степеней. Позиции цифр, отсчитываемые от запятой, называют разрядами. В позиционной системе счисления значение каждого разряда больше значения соседнего справа разряда в число раз, равное основанию s системы.
В ЭВМ применяют позиционные системы счисления с недесятичным основанием: двоичную, шестнадцатеричную, восьмеричную и др. В дальнейшем для обозначения используемой системы счисления число будет заключено в скобки и в индексе указано основание системы счисления.
Наибольшее распространение в ЭВМ имеет двоичная система счисления. В этой системе используются только две («двоичные») цифры: 0 и 1.
В двоичной системе любое число может быть представлено последовательностью двоичных цифр
x = m m-1… 10, -1-2…, где i, либо 0, либо 1.
Эта запись соответствует сумме степеней числа 2, взятых с указанными в ней коэффициентами:
x = m 2m + m-1 2 m-1 + … + 1 21 + 0 20 + -1 2-1 + -2 2-2+... (2.2)
Например, двоичное число
(10101101, 101)2 = 1 27 + 0 26 + 1 25 + 0 24 + 1 23 + 1 22 + 0 21 + 1 20 + 1 2-1 + 0 2-2 + 1 2
как следует из приведенного разложения его по степеням числа 2, соответствует десятичному числу
(173, 625)10
Двоичное изображение числа требует большего (для многоразрядного числа примерно в 3,3 раза) числа разрядов, чем его десятичное представление. Тем не менее применение двоичной системы создает большие удобства для проектирования ЭВМ, так как для представления в машине разряда двоичного числа может быть использован любой простой элемент, имеющий всего два устойчивых состояния. Другим важным достоинством двоичной системы является простота двоичной арифметики.
В восьмеричной системе, употребляется восемь цифр: 0, 1, 2, 3, 4, 5, 6, 7. Любое число в восьмеричной системе представляется последовательностью цифр
x = q q-1 … 10, -1 -2 …,
в которой i могут принимать значения от 0 до 7.
Например, восьмеричное число
(703, 04)8= 7 82+0 81+3 80+0 8-1+4 8-2 = (451, 0625)10.
В шестнадцатеричной системе для изображения чисел употребляется 16 цифр: от 0 до 15. При этом, чтобы одну цифру не изображать двумя знаками, введены специальные обозначения для цифр, больших девяти. Первые десять цифр этой системы обозначаются цифрами от 0 до 9, а старшие пять цифр — латинскими буквами: десять — А, одиннадцать — В, двенадцать — С, тринадцать — D, четырнадцать — Е, пятнадцать — F. Например, шестнадцатеричное число
(В2Е, 4)16 = 11162+2161+14160+416-1 = (2862, 25)10.
Для перевода восьмеричного (шестнадцатеричного) числа в двоичную форму достаточно заменить каждую цифру этого числа соответствующим трехразрядным (четырехразрядным) двоичным числом, при этом отбрасывают ненужные нули, например
8 = (11000101, 1)2.
16 = (11110110010, 111)2.
Для перехода от двоичной к восьмеричной (или шестнадцатеричной) системе поступают следующим образом: двигаясь от запятой влево и вправо, разбивают двоичное число на группы по три (четыре) разряда, дополняя при необходимости нулями крайние левую и правую группы. Затем каждую группу из трех (четырех) разрядов заменяют соответствующей восьмеричной (шестнадцатеричной) цифрой.
Приведем примеры:
а) перевод двоичного числа 1101111001, 1101 в восьмеричное:
= (1571, 64)8;
б) перевод двоичного числа 11111111011, 100111 в шестнадцатеричное:
= (7FB, 9C)16
В настоящее время в большинстве ЭВМ используются двоичная система и двоичный алфавит для представления и хранения чисел, команд и другой информации, а также при выполнении арифметических и логических операций.
Шестнадцатеричная (и восьмеричная) система применяется в текстах программ для более короткой и удобной записи двоичных кодов команд, адресов и операндов. Кроме того, эти системы применяются в ЭВМ при некоторых формах представления чисел.
«10» | «2» | «8» | «16» |
0 | 0000 | 0 | 0 |
1 | 0001 | 1 | 1 |
2 | 0010 | 2 | 2 |
3 | 0011 | 3 | 3 |
4 | 0100 | 4 | 4 |
5 | 0101 | 5 | 5 |
6 | 0110 | 6 | 6 |
7 | 0111 | 7 | 7 |
8 | 1000 | 10 | 8 |
9 | 1001 | 11 | 9 |
10 | 1010 | 12 | A |
11 | 1011 | 13 | B |
12 | 1100 | 14 | C |
13 | 1101 | 15 | D |
14 | 1110 | 16 | E |
15 | 1111 | 17 | F |
16 | 10000 | 20 | 10 |
Название | Обозначение | Соотношение с другими единицами |
Байт | б | 1 байт = 8 бит |
Килобайт | Кб | 1 Кбайт = 1024 байт = 103 |
Мегабайт | Мб | 1 Мбайт = 1024 Кб = 106 |
Гигабайт | Гб | 1 Гбайт = 1024 Мб = 109 |
Терабайт | Тб | 1 Тбайт = 1024 Гб = 1012 |
Петабайт | Пб | 1 Пбайт = 1024 Тб = 1015 |
Эксабайт | Эб | 1 Эбайт = 1024 Пб = 1018 |
Зеттабайт | Зб | 1 Збайт = 1024 Эб = 1021 |
Йотта | Йб | 1 Йбайт = 1024 Зб = 1024 |
Задание к выполнению:
Открыть текстовый редактор MS Word 2007.
Ввести свою: фамилию. Рассчитать информационный объем этого текстового сообщения, исходя из формулы:
Количество символов * информационный вес одного символа (1 байт).
Перевести объем текстового сообщения в биты и килобайты.
Ввести свою ФАМИЛИЮ: Например Иванов.
Открыть режим ВСТАВКАСИМВОЛДРУГИЕ СИМВОЛЫ
Позиционно закодировать каждый символ своей группы с помощью кодовой десятичной таблицы Кириллицы.
Позиционно аналитическим способом, исходя из алгоритма перевода, перевести данный код в: двоичную(«2»), восьмеричную(«8») и шестнадцатеричную («16») системы счисления.
Проверить аналитический способ перевода автоматизированным, с помощью инженерного вида калькулятора. «bin» - двоичная, «oct» - восьмеричная. «hex» - шестнадцатеричная.
Результаты выполненной работы представить в тетради для практических работ по архитектуре ЭВМ и ВС.
Дополнительное задание:
Кодирование по методу Цезаря
В I веке до н.э. Ю.Цезарь во время войны с галлами, переписываясь со своими друзьями в Риме, заменял в сообщении первую букву латинского алфавита (A) – на четвертую (D), вторую (B) – на пятую (E), и т.д.
Получаем видоизмененный алфавит:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
Например, сообщение о победе выглядит так (VENI VIDI VICI):
YHQL YLGL YLFL
Шифрование: Y = X + K (mod N)
Дешифрование: X = Y – K (mod N)
где X – индекс кодируемого символа в алфавите, Y – полученный шифрованный символ, K – ключ, обычное число, N – количество символов в алфавите, mod – остаток от деления K на N
Пример: Закодируем слово COMPUTER с помощью шифра Цезаря.
Допустим ключ будет K=3;
N = количество символов в англ. алфавите (мощность) = 26.
Переведем наше слово в его числовой эквивалент, A=1,B=2…:
COMPUTER = 3,15,13,16,21,20,5,18
Используя ключ K=3, просто складываем каждое число с 3 по модулю 26, это значит, что если получилось в сумме число более 26, то начинаем отсчитывать снова с 1.
Получаем 3+3,15+3,13+3,16+3,21+3,20+3,5+3,18+3, т.е.
6, 18, 16, 19, 24, 23,8, 21, что соответствует слову FRPSXWHU.
Декодирование осуществляется также, только вычитанием:
6-3, 18-3,16-3… и т.д.
Кодирование методом Вижинера
Шифр Вижинера состоит из последовательности нескольких шифров Цезаря.
Кодирование: C(i) = P(i) + K(i) (mod 26)
Декодирование: P(i) = C(i) – K(i) (mod 26)
Вместо одного символа в ключе, как в алгоритме Цезаря, в шифровании методом Вижинера используется последовательность символов.
Пример:
Исходное слово: COMPUTERSCIENCE
Ключ: YES
Для кодирования, нужно ключ подставлять под кодируемым словом, затем индексы букв складывать, индекс начинается с 0, т.е. A=0, B=1…:
COMPUTERSCIENCE
YESYESYESYESYES
______________________________________________________
Получим:
C + Y = 2 + 24 (mod 26) = 0 = A
O + E = 14 + 4 (mod 26) = 18 = Q
…. и т.д.
Алгоритм шифрования достаточно прост, поэтому предлагаю его немного усложнить и поручить шифрование программе. Программу напишем на VB.
Усложнение будет состоять из следующих этапов:
Во-первых, для алфавита криптования будем использовать всю ASCII таблицу.
Во-вторых, количество символов на которые будем сдвигать определим динамически (т.е. будем задавать в программе).
Займемся написанием программы.
Почти всем элементам управления на форме оставлено название по умолчанию, кроме верхнего и нижнего текстбокса, это соответсвенно txtIshod и txtResult.
Итак, начнем с того, что объявим массив для хранения всех элементов таблицы ASCII.
Private MasSymbol(1 To 255) As String
После этого напишем обработчик события возникающего при загрузке формы. В нем во-первых сформируем список значений для сдвига при кодировании, и во-вторых сформируем массив с символами ASCII.
Private Sub Form_Load()
Dim i As Integer
'добавляем список значений
For i = 1 To 255
Me.Combo1.AddItem i
Next i
For i = 1 To 255
MasSymbol(i) = Chr(i)
Next i
End Sub
Теперь напишем обработчик события Click для кнопки «Начать».
Private Sub Command1_Click()
Dim i As Integer
Dim k As Long
'если выбрано шифровать
If Me.Option1.Value = True Then
'определяем сдвиг алфавита
If IsNumeric(Me.Combo1.Text) Then
For i = 1 To 255
If i + Me.Combo1.Text 255 Then
MasSymbol(i) = Chr(i + Me.Combo1.Text - 256)
Else
MasSymbol(i) = Chr(i + Me.Combo1.Text)
End If
Next i
Else
MsgBox "Выберите число сдвига алфавита"
Exit Sub
End If
'шифруем текстовое сообщение
Me.txtResult.Text = ""
For k = 1 To Len(Me.txtIshod.Text)
DoEvents
Me.txtResult.Text = Me.txtResult.Text &_
MasSymbol(Asc(Mid(Me.txtIshod.Text, k, 1)))
Next k
End If
'если выбрано дешифровать
If Me.Option2.Value = True Then
'определяем сдвиг алфавита
If IsNumeric(Me.Combo1.Text) Then
For i = 1 To 255
If i + Me.Combo1.Text 255 Then
MasSymbol(i) = Chr(i + Me.Combo1.Text - 256)
Else
MasSymbol(i) = Chr(i + Me.Combo1.Text)
End If
Next i
Else
MsgBox "Выберите число сдвига алфавита"
Exit Sub
End If
'дешифруем текстовое сообщение
Me.txtResult.Text = ""
For k = 1 To Len(Me.txtIshod.Text)
DoEvents
For i = 1 To 255
If MasSymbol(i) = Mid(Me.txtIshod.Text, k, 1) Then
Me.txtResult.Text = Me.txtResult.Text & Chr(i)
End If
Next i
Next k
End If
End Sub
В этой процедуре сначала проверяем какая опция выбрана (шифровать или дешифровать), после этого соответственно если шифруем, то определяем «сдвинутый» алфавит. И формируем из него набор шифрованных символов. Если дешифруем, то проделываем обратную операцию.
Контрольные вопросы:
Каковы преимущества цифровой информации по отношению к аналоговой?
Назовите методы кодирования символов?
Компьютер имеет оперативную память размером 1 Кбайт (1024 байта). Указать десятичный, шестнадцатеричный и двоичный адрес последнего байта оперативной памяти.
Записать дополнительный код отрицательного числа - 20510 для 16-разрядного компьютерного представления.
В настоящее время широкое распространение получил новый международный стандарт Unicode, который отводит на каждый символ по два байта. Определить максимальное возможное количество символов, которое можно закодировать.
Традиционно для кодирования одного символа используется количество информации, равное 1 байту, то есть 8 битов. Какое максимальное количество различных символов можно закодировать?
Какой объём имеет двусторонняя дискета, если каждая сторона её разбита на 80 дорожек по 20 секторов на дорожке? Объём каждого сектора составляет 0,5 Кбайт.
Десятичный код клавиши Пробел равен 32. Чему равен двоичный и шестнадцатеричный код клавиши Пробел?
Двоичный код клавиши Enter равен 00001101. Чему равен двоичный и шестнадцатеричный код клавиши Enter?
Последовательность числовых десятичных кодов 221, 194, 204 в кодировке СР1251 образует слово «ЭВМ». Написать последовательность шестнадцатеричных кодов.
ЛИТЕРАТУРА
Пятибратов А.П. и др. Вычислительные системы, сети и телекоммуникации, -М.. Финансы и статистика, 2004.-512с..ил.
Таненбаум Э. Архитектура компьютера,-СПб..Питер, 2003.-704с..ил.
Максимов Н. В., Попов И. И., Партыка Т. Л. Архитектура ЭВМ и ВС, -М..ФОРУМ, 2008.-512с..ил.
Колесниченко О.В., Шишигин И.В. Аппаратные средства PC,-СПб.. БХВ-Петербург, 2001.-1024с..ил.