Важнейшей для большинства людей возможностью компьютерной техники является не то, что эта техника может просто быстро производить математические вычисления - ведь множество людей до сих пор ведут финансовые расчёты, используя микрокалькуляторы, а не ПК, - а то, что компьютерная техника может быть использована для работы с текстовыми данными. Вероятно, каждый должен согласиться с тем, что подавляющее большинство пользователей ПК используют программы для обработки текстов чаще, чем программы какого-либо другого назначения. И с тем, что сейчас сложно будет найти компьютер, на котором не была, бы, установлена какая-либо программа для обработки текстов.
Цель: При изучении в школьном курсе информатики раздела «Кодирование текстовой информации» часто ставятся задачи по кодированию и декодированию текстовой информации, а так же представление кодов символов в различных позиционных системах счисления.
Целью моей работы является создание программы облегчающей осуществление выше перечисленных процессов.
Задачи:
Изучить литературу о средствах и видах кодирования текстовой информации естественных языков.
Раскрыть понятие кодирования текстовой информации.
Исследовать понятие позиционных систем счисления.
Создать прикладную программу, преобразующую текстовые символы в коды и перевод кодов в различные позиционные системы счисления, а так же процесс декодирования.
Сделать вывод о применении данной программы в образовательном процессе на уроках информатики.
Гипотеза: Я думаю, что применение прикладной программы значительно облегчит процесс кодирования и декодирования текстовой информации на уроках информатики.
Я считаю, что моя работа актуальна по нескольким причинам:
Предмет исследования: Преобразование символа в код и обратно. Применение систем кодировки в прикладной программе.
Методы исследования: наблюдение, анализ решения задач, применение прикладной программы.
Вложение | Размер |
---|---|
urtaeva_a_kod_simvola.doc | 191.5 КБ |
Международный конкурс исследовательских проектов «Вклад в науку 2020»
Секция: информатика и информационные технологии
Тема: «Программа определения десятичного кода символа и перевод данного кода в двоичную, восьмеричную и шестнадцатеричную системы счисления »
Автор работы: Уртаева Алина Алановна
Место выполнения работы:
МБОУ СОШ №25, 8 класс,
г.Владикавказ
Научный руководитель:
Маркина Вероника Александровна
учитель информатики
г. Владикавказ, 2020-2021г.
СОДЕРЖАНИЕ
Введение | 3 |
| 4 |
| 4 |
| 5 |
| 7 |
| 10 |
| 12 |
| 18 |
| 25 |
Литература | 26 |
ВВЕДЕНИЕ
Важнейшей для большинства людей возможностью компьютерной техники является не то, что эта техника может просто быстро производить математические вычисления - ведь множество людей до сих пор ведут финансовые расчёты, используя микрокалькуляторы, а не ПК, - а то, что компьютерная техника может быть использована для работы с текстовыми данными. Вероятно, каждый должен согласиться с тем, что подавляющее большинство пользователей ПК используют программы для обработки текстов чаще, чем программы какого-либо другого назначения. И с тем, что сейчас сложно будет найти компьютер, на котором не была, бы, установлена какая-либо программа для обработки текстов.
Цель: При изучении в школьном курсе информатики раздела «Кодирование текстовой информации» часто ставятся задачи по кодированию и декодированию текстовой информации, а так же представление кодов символов в различных позиционных системах счисления.
Целью моей работы является создание программы облегчающей осуществление выше перечисленных процессов.
Задачи:
Изучить литературу о средствах и видах кодирования текстовой информации естественных языков.
Раскрыть понятие кодирования текстовой информации.
Исследовать понятие позиционных систем счисления.
Создать прикладную программу, преобразующую текстовые символы в коды и перевод кодов в различные позиционные системы счисления, а так же процесс декодирования.
Сделать вывод о применении данной программы в образовательном процессе на уроках информатики.
Гипотеза: Я думаю, что применение прикладной программы значительно облегчит процесс кодирования и декодирования текстовой информации на уроках информатики.
Я считаю, что моя работа актуальна по нескольким причинам:
Предмет исследования: Преобразование символа в код и обратно. Применение систем кодировки в прикладной программе.
Методы исследования: наблюдение, анализ решения задач, применение прикладной программы.
1.1. КОДИРОВАНИЕ СИМВОЛОВ: ОСНОВА ДЛЯ ОБЕСПЕЧЕНИЯ ВОЗМОЖНОСТИ РАБОТЫ КОМПЬЮТЕРОВ С ТЕКСТОВЫМИ ДАННЫМИ.
В современных компьютерных системах символы, которые люди используют для записи и передачи текстов на своём языке, кодируются с помощью чисел, записанных в двоичной системе счисления. Это делается потому, что микропроцессоры, лежащие в основе современных компьютерных систем, могут делать, по сути, лишь две вещи: производить действия двоичной арифметики и выполнять Булевы логические операции.
Поэтому когда ПК, к примеру, записывает букву "A" на дискету, он не создаёт изображения буквы "A" на магнитном носителе, а записывает на него двоичное число (состоящее из нолей и единиц), соответствующее букве "A" в специальной таблице символов. Вы спросите: но ведь ПК создаёт изображение буквы "A" на дисплее, когда я нажимаю клавишу "A"!? Конечно. Когда Вы нажимаете клавишу с буквой "A", первая вещь, которая при этом происходит - в клавиатуре генерируется число, соответствующее букве "A". ПК использует это число для выборки изображения буквы "A" из файла шрифта, в котором изображение каждой буквы пронумеровано в порядке, определяемом той или иной таблицей символов. Лишь после этого соответствующее изображение появляется на экране. То же самое происходит при печати текста, с той лишь разницей, что изображение буквы "A" оказывается на бумаге, а не на дисплее. Такая система, использующая а) пронумерованные таблицы символов и б) числа (двоичные коды) для внутреннего представления в компьютерах символов естественных языков, позволяет ПК гибко и эффективно делать такие вещи, которые невозможно было реализовать на простой пишущей машинке. ПК может не только распечатывать текст на бумаге, но позволяет также хранить, модифицировать, сортировать, принимать и передавать текстовые данные с умопомрачительно высокой скоростью. Наконец, при наличии соответствующего ПО ПК может быть использован для работы с текстами не на каком-то строго заданном одном, а сразу на многих языках.
1.2. ИССЛЕДОВАНИЕ ИСТОРИИ КОДИРОВАНИЯ СИМВОЛОВ ЕСТЕСТВЕННЫХ ЯЗЫКОВ.
Телеграфия и начало электронной обработки данных
Каждый, кто когда-нибудь смотрел кино об американском Западе XIX-го века, знает, что первым методом кодирования, широко применяемым для преобразования символов и текстов в электронный вид, был метод, предложенный Морзе. То, что этот метод кодирования был изобретён для передачи сообщений по телеграфным линиям, а не для обработки текстов в компьютерах, общеизвестно. Однако гораздо меньшее количество людей знает, что его изобретатель, американец Сэмюэл Финли Бриз Морзе (1791-1872), был также известным художником. В своё время он изучал рисование в Лондоне и там узнал об исследованиях электромагнетизма, проводимых британскими учёными. Возвращаясь по морю в США в 1832-м году, он задумал создать свою собственную систему телеграфа. Именно с этой системы началось движение в сторону того мира электронных сетей, в котором мы сейчас живём, и именно за её разработку Морзе снискал славу "американского Леонардо да Винчи". Морзе изобрёл метод кодирования, который он использовал для посылки своего исторического сообщения, в 1838-м году. Метод кодирования Морзе напоминает двоичный код, используемый в современных компьютерах, тем, что он тоже базировался на двух возможных значениях - в случае метода кодирования Морзе, это были точка или тире. Однако в отличие от современных методов кодирования, используемых для нумерации символов в современных компьютерах, комбинации точек и тире, используемые для представления символов в методе кодирования Морзе, были разной длины. Морзе использовал принцип, по которому наиболее часто употребляемым буквам ставились в соответствие наиболее короткие последовательности из точек и тире, что существенно сокращало длину сообщения. Например, наиболее часто используемой в английском языке букве "E" в методе кодирования Морзе соответствует одна точка; второй по частоте использования букве английского языка - "T" - одно тире. Интересно, что Морзе подсчитывал частоту использования букв не путём изучения текстов, а путём подсчёта литер каждого типа в типографском наборе. Результатом его поистине каторжного труда стал высокоэффективный метод кодирования, который с некоторыми изменениями используется до сих пор, хотя с момента его изобретения прошло уже более 160 лет.
Следующим существенным прорывом вперёд в технологии телеграфа был примитивный печатающий телеграфный аппарат, или "телетайп"; его запатентовал во Франции в 1874-м году Жан Морис Эмиль Бодо (1845-1903). Как и телеграф Морзе, это изобретение привело к созданию новой системы кодирования символов - 5-битного метода кодирования Бодо. Метод кодирования Бодо стал первым в мире методом кодирования текстовых данных с помощью двоичных последовательностей. Сообщения, для передачи которых использовалась система кодирования Бодо, распечатывались операторами на узкие ленты для двухканальной связи с помощью специальных 5-клавишных клавиатур. В более поздних версиях устройства использовались клавиатуры с буквами, которые уже автоматически генерировали соответствующую той или иной букве 5-битную последовательность. Другой особенностью телетайпа Бодо было мультиплексирование, обеспечивающее возможность одновременной работы до 6-ти операторов благодаря применению системы временного распределения. Это позволило значительно увеличить пропускную способность телеграфной линии. Предложенная Бодо аппаратура зарекомендовала себя весьма положительно и оставалась в широком применении в XX-м веке, пока её не вытеснили телефоны и персональные компьютеры.
Жан Бодо сконструировал телеграфный аппарат многократного действия, который имел возможность передавать по одному проводу два и более сообщения в одну сторону. Аппарат Бодо и созданные по его принципу получили название стартстопных. Кроме того, Бодо создал весьма удачный телеграфный код (Код Бодо), который впоследствии был воспринят повсеместно и получил наименование Международный телеграфный код № 1 (ITA1). Модифицированная версия МТК № 1 получила название МТК № 2 (ITA2). В СССР на основе ITA2 был разработан телеграфный код МТК-2. Дальнейшие модификации конструкции стартстопного телеграфного аппарата, предложенного Бодо, привели к созданию телепринтеров (телетайпов).В честь Бодо была названа единица скорости передачи информации — бод.
1890-й год: американское Бюро статистики и появление в нём новой системы для кодирования символов
Конец XIX-го века ознаменовался изобретением ещё одной системы для кодирования символов естественных языков. Она была создана в США для обработки данных, собираемых во время переписей населения, молодым американским изобретателем, которого звали Герман Холлерит (1860-1929). После окончания Нью-Йоркской Колумбийской школы горного дела в 1879-м году, в 1880-м Холлерит устроился на работу в Бюро статистики при Министерстве внутренних дел США. Последствия этого, казалось бы, незначительного события сказывались впоследствии вплоть до 1970-х годов, "золотой эры" больших вычислительных машин. Герман Холлерит был ни кем иным, как изобретателем кода Холлерита, использовавшегося для записи алфавитно-цифровой информации на бумажных перфорированных картах. С появлением перфокарт в американских массах возникло шуточное выражение 'do not fold, spindle, or mutilate' ("не гнуть, не тянуть, не мять"), которое оставляло у многих американцев впечатление, что компьютеры скоро будут полностью контролировать их общество.
В системе кодирования Холлерита, на первый взгляд, двоичная последовательность, соответствующая одному алфавитно-цифровому символу, регистрировалась в 12-ти горизонтальных рядах перфокарты, и поскольку каждый из рядов мог быть перфорирован или не перфорирован (содержать 1 или 0), это давало бы 12-битный метод кодирования. Максимально возможное количество элементов, которое могло бы быть представлено с помощью такого метода кодирования - 212, то есть 4096. На самом же деле таблица символов, используемая в системе Холлерита, содержала только 69 символов - это были заглавные латинские буквы, арабские цифры, знаки препинания и некоторые другие символы. Таким образом, реальные возможности системы кодирования Холлерита по представлению текстовых данных были сравнимы даже с таковыми возможностями системы кодирования Бодо. Зачем же тогда, спросит читатель, на перфокарте было предусмотрено так много горизонтальных рядов? Одной из причин этому является тот факт, что большее количество рядов позволяет кодировать данные, производя меньшее количество перфораций, а это было критично, так как работа с перфораторами карт в течение многих лет производилась вручную. Поскольку рядов было много, для кодирования каждой из 10 арабских цифр (а также 2-х букв латинского алфавита) было достаточно сделать всего одну перфорацию на один вертикальный ряд. Оставшиеся 24 буквы латинского алфавита кодировались с помощью двух перфораций. Для кодирования знаков препинания и прочих символов требовалось сделать 2 или больше перфораций, поэтому нередко они вообще не использовались.
1.3. ТАБЛИЦЫ СИМВОЛОВ И МЕТОДЫ КОДИРОВАНИЯ, ПРИМЕНЯЕМЫЕ ДЛЯ РАБОТЫ С МНОГОЯЗЫЧНЫМИ ТЕКСТАМИ
Ранние многоязычные таблицы символов и методы кодирования
Изначально таблицы символов применялись только для удовлетворения нужд по обмену информацией и редактированию текстов на национальных языках конкретных государств, однако в реальном мире нередко бывает необходимо использовать в одном документе символы нескольких разных языков одновременно. Так, книгоиздательской промышленности нужно использовать множество символов иностранных языков при выпуске словарей иностранных слов или, например, книг иностранных авторов на языке оригинала. А с тех пор, как появилась сеть Internet, похоже, каждый человек по мере работы в ней будет сталкиваться с данными на иностранном языке, написанными набором символов, используемых другими нациями.
В настоящее время большая часть пользователей при помощи компьютера обрабатывает текстовую информацию, которая состоит из символов: букв, цифр, знаков препинания и др.
Традиционно, для того чтобы закодировать один символ используют количество информации равное 1 байту, т. е. I = 1 байт = 8 бит. При помощи формулы, которая связывает между собой количество возможных событий К и количество информации I, можно вычислить сколько различных символов можно закодировать (считая, что символы - это возможные события):
К = 2I = 28 = 256, т. е. для представления текстовой информации можно использовать алфавит мощностью 256 символов.
Суть кодирования заключается в том, что каждому символу ставят в соответствие двоичный код от 00000000 до 11111111 или соответствующий ему десятичный код от 0 до 255 [5, c. 92].
Необходимо помнить, что в настоящее время для кодировки русских букв используют пять различных кодовых таблиц (КОИ - 8, СР1251, СР866, Мас, ISO), причем тексты, закодированные при помощи одной таблицы не будут правильно отображаться в другой кодировке. Наглядно это можно представить в виде фрагмента объединенной таблицы кодировки символов.
Одному и тому же двоичному коду ставится в соответствие различные символы.
Двоичный код Десятичный код КОИ8 СР1251 СР866 Мас ISO
11000010 194 б В - - Т
Впрочем, в большинстве случаев о перекодировке текстовых документов заботится не пользователь, а специальные программы - конверторы, которые встроены в приложения.
Начиная с 1997 г. последние версии Microsoft Windows&Office поддерживают новую кодировку Unicode, которая на каждый символ отводит по 2 байта, а, поэтому, можно закодировать не 256 символов, а 65536 различных символов.
Чтобы определить числовой код символа можно или воспользоваться кодовой таблицей, или, работая в текстовом редакторе Word. Для этого в меню нужно выбрать пункт "Вставка" - "Символ", после чего на экране появляется диалоговая панель Символ. В диалоговом окне появляется таблица символов для выбранного шрифта. Символы в этой таблице располагаются построчно, последовательно слева направо, начиная с символа Пробел (левый верхний угол) и, кончая, буквой "я" (правый нижний угол).
Для определения числового кода символа в кодировке Windows (СР1251) нужно при помощи мыши или клавиш управления курсором выбрать нужный символ, затем щелкнуть по кнопке Клавиша. После этого на экране появляется диалоговая панель Настройка, в которой в нижнем левом углу содержится десятичный числовой код выбранного символа.
Одним битом можно закодировать два значения: Да или Нет (1 или 0).
Двумя битами можно закодировать уже четыре значения: 00, 01, 10, 11.
Тремя битами кодируются 8 разных значений [1, c. 74].
Добавление одного бита удваивает количество значений, которое можно закодировать. При восьми битах уже можно закодировать 256 разных значений. Нетрудно догадаться, что если бы в байте было 9 битов, то одним байтом можно было бы закодировать 512 разных значений, а если бы в нем было 10 битов, то 1024 и т. д.
Биты 1 2 3 4 5 6 7 8
Количество кодируемых значений 2 4 8 16 32 64 128 256
Но все-таки в байте не 9 и не 10 битов, а только 8, и потому с его помощью кодируют 256 разных значений. Много это или мало? Смотря для чего. Давайте посмотрим, как с помощью байтов кодируют текстовую информацию.
В русском языке 33 буквы (символа) -- для их кодирования достаточно 33 различных байтов. Если мы хотим различать прописные (заглавные) и строчные буквы, то потребуется 66 байтов. Для строчных и прописных букв английского языка хватит еще 52 символов -- получается 118. Добавим сюда цифры (от 0 до 9), все возможные знаки препинания: точку, запятую, тире, восклицательный и вопросительный знаки. Добавим скобки: круглые, квадратные и фигурные, а также знаки математических операций: +, -, =, /, *. Добавим специальные символы, например такие, как: %,$,&, @, -- мы видим, что все их можно выразить восемью битами, и при этом еще останутся свободные коды, которые можно использовать для других целей.
Дело осталось за малым: надо всем людям мира договориться о том, каким кодом (от 0 до 255) должен кодироваться каждый символ. Если, например, все люди будут знать, что код 33 означает восклицательный знак, а код 63 -- знак вопросительный, то текст, набранный на одном компьютере, всегда можно будет прочитать и распечатать на другом компьютере.
Такая всеобщая договоренность об одинаковом использовании чего-либо называется стандартом. Стандарт устанавливает таблицу, в которой записано, каким кодом должен кодироваться каждый символ. Такая таблица называется таблицей кодов. В этой таблице должно быть 256 строк, в которых записывается, какой байт какому символу соответствует [3, c. 34].
Но здесь-то и начались проблемы. Дело в том, что символы, которые хороши для одной страны, не подходят для другой. В Греции используются одни буквы, в Турции -- другие. То, что подходит для Америки, не годится для России, а то, что подходит для России, не подходит для Германии.
Поэтому было принято следующее решение. Таблицу кодов разделили пополам. Первые 128 кодов (с 0 до 127) должны быть стандартными и обязательными для всех стран и всех компьютеров, а во второй половине (с кода 128 до кода 255) каждая страна может делать все, что ей угодно, и создавать в этой половине свой стандарт -- национальный.
Первую (международную) половину таблицы кодов называют таблицей ASCII -- ее ввел американский институт стандартизации ANSI. В этой таблице размещаются прописные и строчные буквы английского алфавита, символы чисел от 0 до 9, все знаки препинания, символы арифметических операций и некоторые другие специальные коды.
За вторую половину кодовой таблицы (коды от 128 до 255) стандарт ASCII не отвечает Разные страны могут создавать здесь свои таблицы. Часто бывает, что даже в одной стране в этой половине действуют несколько разных стандартов, предназначенных для разных компьютерных систем. В России, например, содержание этой половины таблицы может подчиняться четырем разным стандартам, каждый из которых действует в какой-то своей, особой области.
По этой причине эффективные многоязычные таблицы символов и методы для кодирования этих символов совершенно необходимы для жизни в XXI-м веке, но проблема в том, что они слишком долго не являлись предметом научных исследований и разработок. Самые первые такие таблицы и методы кодирования появились в первой половине 1980-х, в те времена, когда большинство компьютеров были 8-битными и 16-битными.
Наиболее достойными внимания среди них были рабочие станции Star, производимые корпорацией Xerox и имеющие программу для обработки многоязычных текстов, называемую ViewPoint, а также офисные компьютеры модели 5550, производимые корпорацией IBM. Обе эти системы позволяли работать с большим количеством азиатских языков, в дополнение к большому количеству языков, использующих латинский алфавит, но они так никогда и не вошли в широкое употребление из-за дороговизны. Однако многоязычная таблица символов, предложенная корпорацией Xerox, была взята на вооружение специалистами по компьютерной технике и лингвистами в США. Это в конце концов привело к созданию движения Unicode, предложившего свою многоязычную таблицу символов (и методы кодирования этих символов), которая сейчас является одним из главных соперников в борьбе за международное признание.
Проект TRON - многоязычная таблица символов и многоязычное окружение.
Таблица символов и метод кодирования TRON, а также многоязычное окружение TRON были впервые описаны на английском языке во время проведения 3-го симпозиума по проекту TRON в 1987-м году. В применённом в TRON подходе к обработке многоязычных документов существует ряд особенностей, делающих его уникальным. Одна из них состоит в том, что таблица символов TRON расширяема практически до бесконечности, что позволяет включить в нес символы всех без исключения языков, когда-либо использовавшихся (и используемых сейчас) человечеством, и даже символы тех языков, которые ещё не изобретены. Это реализовано с помощью escape-последовательностей, которые используются для переключения между очень большим количеством ("внутренних") таблиц, которые содержат символы, кодируемые с помощью 8-ми и 16-ти бит. Кроме того, в TRON имеются коды для идентификации языка, которые необходимы, например, для возможности реализации программ для правильной сортировки текстовых данных, содержащих символы разных языков.
Unicode и ISO 10646
Как уже было сказано выше, американские компьютерные корпорации начали в первой половине 1980-х гг. работу над созданием многоязычной таблицы символов и методов для кодирования этих символов. Результаты исследовательских работ в данной области, проведённых корпорациями Xerox и IBM, были успешно воплощены этими корпорациями в своих компьютерных системах. Исследователи из Xerox в последующем "обратили в свою веру" представителей других компьютерных корпораций США, и в конце концов они вместе начали проект американской индустрии, названный Unification Code, или Unicode, главной задачей которого было сведение всех существующих в мире таблиц символов в единую таблицу символов.
1.4. ПОЗИЦИОННЫЕ СИСТЕМЫ СЧИСЛЕНИЯ.
Основные достоинства любой позиционной системы счисления — простота выполнения арифметических операций и ограниченное количество символов (цифр), необходимых для записи любых чисел.
Основанием позиционной системы счисления называется возводимое в степень целое число, которое равно количеству цифр, используемых для изображения чисел в данной системе счисления. Основание показывает также, во сколько раз изменяется количественное значение цифры при перемещении ее на соседнюю позицию.
Возможно множество позиционных систем, так как за основание системы счисления можно принять любое число не меньшее 2. Наименование системы счисления соответствует ее основанию (десятичная, двоичная, восьмеричная, шестнадцатеричная и т. д.).
! | В позиционных системах счисления количественный эквивалент (значение) цифры зависит от ее места (позиции) в записи числа. [8] стр.15 |
Десятичная система характеризуется тем, что в ней 10 единиц какого-либо разряда образуют единицу следующего старшего разряда. Другими словами, единицы различных разрядов представляют собой различные степени числа 10.
В системе счисления с основанием q (q-ичная система счисления) единицами разрядов служат последовательные степени числа q, иначе говоря, q единиц какого-либо разряда образуют единицу следующего разряда. Для записи чисел в q-ичной системе счисления требуется q различных цифр (0,1,...,q-1).
В позиционной системе счисления любое вещественное число в развернутой форме может быть представлено в следующем виде:
1 | Аq=± (an-1qn-1+an-2qn-2+...+a0q0+a-1q-1+a-2q-2+...+a-mq-m) |
или
2 | Аq =± aiqi |
Здесь А — само число,
q — основание системы счисления,
ai —цифры, принадлежащие алфавиту данной системы счисления,
n — число целых разрядов числа,
m — число дробных разрядов числа.
Свернутой формой записи числа называется запись в виде
3 | A=an-1an-2...a1a0,a-1...a-m |
Именно такой формой записи чисел мы и пользуемся в повседневной жизни. Иначе свернутую форму записи называют естественной или цифровой.
Пример 1. Десятичное число А10=4718,63 в развернутой форме запишется так:
А10=4*103+7*102+1*101+8*100+6*10-1+3*10-2
Пример 2. Двоичная система счисления.
В двоичной системе счисления основание q=2. В этом случае формула (2.4) принимает вид:
А2=± (an-12n-1+an-22n-2+...+a020+a-12-1+a-22-2+...+a-m2-m)
Здесь аi — возможные цифры (0 и 1).
Итак, двоичное число представляет собой цепочку из нулей и единиц. При этом оно имеет достаточно большое число разрядов. Быстрый рост числа разрядов — самый существенный недостаток двоичной системы счисления.
Записав двоичное число А2=1001,1 в развернутом виде и произведя вычисления, получим это число, выраженное в десятичной системе счисления:
А2=1*23+0*22+0*21+1*20+1*2-1 = 8+1+0,5 = 9,510.
Пример 3. Восьмеричная система счисления.
Основание: q=8.
Алфавит: 0, 1, 2, 3, 4, 5, 6 и 7.
Записав восьмеричное число А8=7764,1 в развернутом виде и произведя вычисления, получим это число, выраженное в десятичной системе счисления:
А8=7*83+7*82+6*81+4*80+1*8-1 = 3584 + 448 + 48 + 4 + 0,125 = 4084,12510
Пример 4. Шестнадцатеричная система счисления.
Основание: q=16.
Алфавит: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E и F.
Здесь только десять цифр из шестнадцати имеют общепринятое обозначение 0,1, …9. Для записи остальных цифр (10, 11, 12, 13, 14 и 15) обычно используются первые пять букв латинского алфавита.
Таким образом, запись 3АF16 означает:
3АF16 = 3*162+10*161+15*160 = 768+160+15 = 94310.
2.4. СОСТАВЛЕНИЕ ПРОГРАММЫ КОДИРОВАНИЯ ТЕКСТОВОЙ ИНФОРМАЦИИ. ПРЕОБРАЗОВАНИЕ КОДОВ В 2-Ю, 8-Ю, 16-Ю СИСТЕМЫ СЧИСЛЕНИЯ.
1. Выбор и расположения объектов на форме.
uses vcl;
//$VCLDESIGN+
var
Form1: Form;
TextLabel1: TextLabel;
TextLabel2: TextLabel;
TextLabel3: TextLabel;
TextLabel4: TextLabel;
TextLabel5: TextLabel;
Button1: Button;
Edit1: Edit;
Edit2: Edit;
Button2: Button;
Edit3: Edit;
Edit4: Edit;
Edit5: Edit;
Button3: Button;
Button4: Button;
Button5: Button;
//$VCLDESIGN-
procedure Button1OnClick;
var a,b,c:integer; k:Char;
begin
a:=strToint(edit2.text);
k:=chr(a);
Edit1.text:=k;
end;
procedure Edit1OnClick;
begin
end;
procedure Edit2OnClick;
begin
end;
procedure Form1OnCreate;
begin
end;
procedure Button2OnClick;
var a,l:integer; k:String;f:char;
begin
k:=Edit1.text;
l:=length(k);
f:=k[1];
a:=ord(f);
Edit2.text:=FloatToStr(a);
end;
procedure Button3OnClick;
var b,c,i,okt,des,n, ost,l:integer;s,s1,sbox:string;
begin
des:=StrToInt(Edit2.Text);
n:=0;
i:=0;
s:='';
repeat
inc(n);
inc(i);
ost:=des mod 16;
des:=des div 16;
if ost>=10 then
begin
if ost=10 then s:=s+'A';
if ost=11 then s:=s+'B';
if ost=12 then s:=s+'C';
if ost=13 then s:=s+'D';
if ost=14 then s:=s+'E';
if ost=15 then s:=s+'F';
end
else
begin
s:=s+IntToStr(ost);
end
until des=0;
n:=1;
l:=length(s);
for i:=1 to (l div 2)do
begin
sbox:=s[n];
s[n]:=s[l+l-n];
s[1+l-n]:=sbox[l];
inc(n);
end;
Edit3.text:=s;
end;
procedure Button4OnClick;
const zn:string[8]='01234567';
procedure DecToOct(n:longint;var s:string);
begin
s:='';
while n>0 do
begin
s:=zn[n mod 8+1]+s;
n:=n div 8;
end;
end;
var d:longint;
s:string;
begin
d:=StrToInt(Edit2.Text);
DecToOct(d,s);
Edit4.text:=s;
end;
procedure Button5OnClick;
var n,i: integer; s:string;
begin
repeat
n:=StrToInt(Edit2.Text);
s:='';
until(n > 0);
while n > 0 do begin
if n mod 2 = 0 then
s:= s + '0'
else begin
s:= s + '1';
n:= n - 1;
end;
n:= n div 2;
end;
Edit5.text:=s;
end;
procedure InitControls;
begin
Form1:= Form.Create(0,0,696,410);
Form1.InitControl(True,False,alNone,crDefault,clBtnFace,'Форма1','');
TextLabel1:= TextLabel.Create(Form1,13,48,84,13);
TextLabel1.InitControl(True,True,alNone,crDefault,clBtnFace,'Введите Символ','');
TextLabel2:= TextLabel.Create(Form1,16,88,64,17);
TextLabel2.InitControl(True,True,alNone,crDefault,clBtnFace,'Введите Код','');
TextLabel3:= TextLabel.Create(Form1,16,128,66,13);
TextLabel3.InitControl(True,True,alNone,crDefault,clBtnFace,'Код в 16 рич.','');
TextLabel4:= TextLabel.Create(Form1,16,168,60,13);
TextLabel4.InitControl(True,True,alNone,crDefault,clBtnFace,'Код в 8 рич.','');
TextLabel5:= TextLabel.Create(Form1,16,216,79,13);
TextLabel5.InitControl(True,True,alNone,crDefault,clBtnFace,'Код в 2 -ричную','');
Button1:= Button.Create(Form1,368,48,89,25);
Button1.InitControl(True,True,alNone,crDefault,0,'Cимвол','');
Edit1:= Edit.Create(Form1,216,48,121,32);
Edit1.InitControl(True,True,alNone,crDefault,clWindow,'','');
Edit2:= Edit.Create(Form1,216,88,121,32);
Edit2.InitControl(True,True,alNone,crDefault,clWindow,'','');
Button2:= Button.Create(Form1,368,88,75,25);
Button2.InitControl(True,True,alNone,crDefault,0,'Код','');
Edit3:= Edit.Create(Form1,216,128,121,32);
Edit3.InitControl(True,True,alNone,crDefault,clWindow,'','');
Edit4:= Edit.Create(Form1,216,168,121,32);
Edit4.InitControl(True,True,alNone,crDefault,clWindow,'','');
Edit5:= Edit.Create(Form1,216,208,121,32);
Edit5.InitControl(True,True,alNone,crDefault,clWindow,'','');
Button3:= Button.Create(Form1,368,136,75,25);
Button3.InitControl(True,True,alNone,crDefault,0,'10 ->16','');
Button4:= Button.Create(Form1,368,176,75,25);
Button4.InitControl(True,True,alNone,crDefault,0,'10->8','');
Button5:= Button.Create(Form1,368,216,75,25);
Button5.InitControl(True,True,alNone,crDefault,0,'10->2','');
Form1.Font.Color:= clBlack;
TextLabel1.Font.Color:= clBlack;
TextLabel2.Font.Color:= clBlack;
TextLabel3.Font.Color:= clBlack;
TextLabel4.Font.Color:= clBlack;
TextLabel5.Font.Color:= clBlack;
Button1.Font.Color:= clBlack;
Button1.Font.Size:= 15;
Edit1.Font.Color:= clBlack;
Edit1.Font.Size:= 14;
Edit2.Font.Color:= clBlack;
Edit2.Font.Size:= 14;
Button2.Font.Color:= clBlack;
Button2.Font.Size:= 15;
Edit3.Font.Color:= clBlack;
Edit3.Font.Size:= 14;
Edit4.Font.Color:= clBlack;
Edit4.Font.Size:= 14;
Edit5.Font.Color:= clBlack;
Edit5.Font.Size:= 14;
Button3.Font.Color:= clBlack;
Button3.Font.Size:= 15;
Button4.Font.Color:= clBlack;
Button4.Font.Size:= 15;
Button5.Font.Color:= clBlack;
Button5.Font.Size:= 15;
Form1.OnCreate:=Form1OnCreate;
Button1.OnClick:=Button1OnClick;
Edit1.OnClick:=Edit1OnClick;
Edit2.OnClick:=Edit2OnClick;
Button2.OnClick:=Button2OnClick;
Button3.OnClick:=Button3OnClick;
Button4.OnClick:=Button4OnClick;
Button5.OnClick:=Button5OnClick;
Form1.Position:= poScreenCenter;
Form1.OnCreate;
Form1.Show;
end;
begin
InitControls;
end.
2.5. РЕШЕНИЕ ЗАДАЧ С ПОМОЩЬЮ ПРОГРАММЫ.
14. Декодируйте следующие тексты, заданные десятичным кодом:
а) 087 111 114 100;
б) 068 079 083;
в) 080 097 105 110 116 098 114 117 115 104.
([8], стр. 68 №2.61)
Решение:
Запустите текстовый редактор Hieroglyph. Включить клавишу Num Lock. Удерживая клавишу Alt, набрать код символа на цифровой клавиатуре. Отпустить клавишу Alt, на экране появится соответствующая буква.
а) 087 111 114 100 → Word;
б) 068 079 083 → DOS;
в) 080 097 105 110 116 098 114 117 115 104 → Paintbrush.
Ответ: Word; DOS; Paintbrush.
Уровень «4»
Не используем кодировочные таблицы
15. Буква «I »в таблице кодировки символов имеет десятичный код 105. что зашифровано последовательностью десятичных кодов: 108 105 110 107? ([7],пример 2, стр.132)
Решение:
Учитываем принцип последовательности кодирования и порядок букв в латинском алфавите и, можно, не обращаться к таблице кодировки символов.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ответ: Закодировано слово «link»
16. Десятичный код (номер) буквы «е» в таблице кодировки символов ASCII равен 101. Какая последовательность десятичных кодов будет соответствовать слову:
1) file; 2) help? ([7], №35, стр.133)
Решение:
Учитываем принцип последовательности кодирования и порядок букв в латинском алфавите:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ответ:
1) 102 105 108 101
2) 104 101 108 112
17. Десятичный код (номер) буквы «о» в таблице кодировки символов равен 111. Что зашифровано с помощью последовательности десятичных кодов:
1) 115 112 111 114 116
2) 109 111 117 115 101
([7], №36, стр.133)
Решение:
Речь идет о латинской букве «о», а не о русской, так как код меньше 127. Учитывая принцип последовательности кодирования и порядок букв в латинском алфавите, имеем:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ответ: 1) sport, 2)mouse
18. Для 5 букв латинского алфавита заданы их двоичные коды (для некоторых букв из двух бит, для некоторых из трех). Эти коды представлены в таблице.
|
|
|
|
|
|
|
|
|
|
Определить, какой набор букв закодирован двоичной строкой 0110100011000
1) EBCEA 2) BDDEA 3)BDCEA 4) EBAEA ?
Решение:
Так как код записывается, начиная с младшего разряда, то рассмотрим двоичную строку справа налево: 0110 100 011 000. Легко увидеть, что последние три буквы будут С, Е, А. Кода 110 нет, значит рассмотрим код из двух бит. 10 – D, 01 – B. Значит, двоичной строкой закодирован набор букв 3) BDCEA. Других вариантов дешифровки заданной двоичной строки не существует.
Ответ: 3) BDCEA
Уровень «5»
Не используем кодировочные таблицы
19. С помощью последовательности десятичных кодов: 99 111 109 112 117 116 101 114 зашифровано слово «computer». Какая последовательность десятичных кодов будет соответствовать этому же слову, записанному заглавными буквами? ([7],пример 3, стр.132)
Решение:
Учитываем, что разница между десятичным кодом строчной буквы латинского алфавита и десятичным кодом соответствующей заглавной буквы равна 32.
Десятичный код | Латинская буква строчная | Десятичный код | Латинская буква заглавная |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
20. Десятичный код (номер) буквы «i» в таблице кодировки символов ASCII равен 105. Какая последовательность десятичных кодов будет соответствовать слову INFORMATION? ([7], №37, стр.134)
Решение:
Учитываем, что разница между десятичным кодом строчной буквы латинского алфавита и десятичным кодом соответствующей заглавной буквы равна 32, а также, что сначала в таблице записываются заглавные, а потом строчные буквы, определим код заглавной буквы «I». 105-32 =73. Учитывая принцип последовательности кодирования и порядок букв в латинском алфавите, имеем:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ответ: 73 78 70 79 82 77 65 84 73 79 78
21. С помощью последовательности десятичных кодов: 66 65 83 73 67 зашифровано слово BASIC. Какая последовательность десятичных кодов будет соответствовать этому слову, записанному строчными буквами. ([7], №38, стр.134)
Решение:
Учитываем, что разница между десятичным кодом строчной буквы латинского алфавита и десятичным кодом соответствующей заглавной буквы равна 32, и то, что заглавные буквы записываются раньше строчных, имеем, код слова basic: 98 97 115 105 99
Ответ: 98 97 115 105 99
Внутреннее представление текста в компьютере.
Методические рекомендации:
Для решения задач учащиеся должны пользоваться кодовыми таблицами (см.[7], приложение 2, стр.295, 296) и Wise Calculator (для перевода в систему счисления кодов символов, с целью экономии времени). Учащиеся должны понимать, что информация, хранящаяся в двоичном коде чаще всего перекодируется в шестнадцатеричную форму. Шестнадцатеричный код каждого символа – двузначное число от 00 до FF (если длина двоичного кода равна 8, разбиваем на тетрады)
Уровень «3-4»
Оценка 3 ставится за кодирование, оценка 4 –за перевод в 16-ричную систему
Используем кодировочные таблицы
22. Закодируйте с помощью кодировочной таблицы ASCII и представьте в шестнадцатеричной системе счисления следующие тексты:
а) Password;
б) Windows;
в) Norton Commander.
([8], стр. 68, №2.58)
Решение:
1. Найдите в кодовой таблице ASCII коды соответствующих символов (в десятичной системе счисления)
а) Password → 80 97 115 115 119 111 114 100.
б) Windows → 87 105 110 100 111 119 115.
в) Norton Commander → 78 111 114 116 111 110 32 67 111 109 109 97 110 100 101 114
2. Переведите коды с помощью калькулятора в шестнадцатеричную систему счисления.
а) 80 97 115 115 119 111 114 100 → 50 61 73 73 77 6F 72 64
б) 87 105 110 100 111 119 115 → 57 69 6E 64 6F 77 73
в) 78 111 114 116 111 110 32 67 111 109 109 97 110 100 101 114 → 4E 6F 72 74 6F 6E 20 43 6F 6D 6D 61 6E 64 65 72
Ответ:
а) 50 61 73 73 77 6F 72 64
б) 57 69 6E 64 6F 77 73
в) 4E 6F 72 74 6F 6E 20 43 6F 6D 6D 61 6E 64 65 72
23. Декодируйте с помощью кодировочной таблицы ASCII следующие тексты, заданные шестнадцатеричным кодом:
а) 54 6F 72 6E 61 64 6F;
б) 49 20 6C 6F 76 65 20 79 6F 75;
в) 32 2A 78 B 79 3D 30
([8], стр. 68 №2.59)
Решение:
1. Переведите коды с помощью калькулятора из шестнадцатеричной системы счисления в десятичную.
а) 54 6F 72 6E 61 64 6F → 84 111 114 110 97 100 111
б) 49 20 6C 6F 76 65 20 79 6F 75 → 73 32 108 111 118 101 32 121 111 117
в) 32 2A 78 2B 79 3D 30 → 50 42 120 43 121 57 48
2. Найдите в кодовой таблице ASCII символы, соответствующие кодам:
а) 84 111 114 110 97 100 111 → Tornado;
б) 73 32 108 111 118 101 32 121 111 117 → I love you;
в) 50 42 120 43 121 57 48 → 2*X+Y=0.
Ответ: а) Tornado; б) I love you; в) 2*X+Y=0.
Уровень «5»
Используем кодировочные таблицы в приложении к учебнику [7], где представлен десятичный и двоичный код символа или кодировочные таблицы на CD к учебнику Н. Угриновича. Перевод чисел в шестнадцатеричную систему производится без калькулятора.
24. Пользуясь таблицей кодировки символов, расшифруйте текст, представленный в виде шестнадцатеричных кодов символов:
1) 57 69 6Е 64 6F 77 73 2D 39 35;
2) 63 6F 6D 65 2D 4F 4E 2D 6C 69 6E 65
([7], №40, стр.134)
Решение:
Переведем числа в двоичную систему счисления и найдем символы в таблице:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
25. Представьте в форме шестнадцатеричного кода слово "БИС" во всех пяти кодировках. ([8], стр. 68 №2.62)
Решение:
Последовательности десятичных кодов слова "БИС" в различных кодировках составляем на основе кодировочных таблиц:
КОI8-Р: = 226 233 243
СР1251: = 193 200 209;
СР866: = 129 136 145;
Мас: = 129 136 145;
ISO: = 177 184 193.
Переводим с помощью калькулятора последовательности кодов из десятичной системы в шестнадцатеричную:
КОI8-Р: = 226 233 243 = E2 E9 F3;
СР1251: = 193 200 209 = C1 C8 D1;
СР866: = 129 136 145 = 81 88 91;
Мас: = 129 136 145 = 81 88 91;
ISO: = 177 184 193 = B1 B8 C1.
ЗАКЛЮЧЕНИЕ
В результате работы над данной темой я пришла к следующим вводам:
Таким образом можно сказать, что созданная мной прикладная программа значительно ускоряет процесс решения задач.
Литература:
Астрономический календарь. Январь, 2019 год
Рисуем подснежники гуашью
Смекалка против Змея-Горыныча
Рисуем тыкву
Хризантема и Луковица