Один символ текста обычно кодируется чем
Один символ текста обычно кодируется чем
1. Пользуясь таблицей кодировки ASCII и CP-1251 закодируйте следующие послания:
2. В некоторой кодировке для хранения одного символа отводится 2 байта. Определите вес слова из двадцати двух символов в данной кодировке.
3. В кодировке КОИ-8 для хранения одного символа отводится 1 байт. Определите вес (в битах) слова «дезоксирибонуклеиновая».
4. Некоторый текст записан в различных кодировках. Известно, что текс в 16-битной кодировке Unicode, на 120 бит больше текста, закодированного 8-битной кодировкой CP-1251. Определите количество символов в тексте.
5. В кодировке Unicode для хранения одного символа отводится 16 бит. Дан отрывок текста, записанного в данной кодировке:
«Калининград, Ярославль, Владимир, Елабуга, Троицк, Томск, Омск, Уфа – города России».
В результате редактирования текста, одно слово и ставшие лишними пробелы и запятые удалили. Новый текст стал на 14 байт меньше. Определите удалённое слово.
6. Текст, напечатанные на компьютере занял несколько страниц. Каждая страница текста состоит из 60 строк по 30 символов в строке. Файл с данным текстом занимает в компьютере 225 Кбайт. Сколько страниц содержит данный текст, если известно, что он закодирован в Unicode.
7. В кодировке Windows-1251 каждый символ кодируется 8 бит. Вова хотел написать текст (в нём нет лишних пробелов):
«Скользя по утреннему снегу,
Друг милый, предадимся бегу
И навестим поля пустые…»
Одно из слов ученик написал два раза подряд через пробел. При этом размер написанного предложения в данной кодировке оказался на 10 байт больше, чем размер нужного предложения. Напишите в ответе лишнее слово.
9. В кодировке КОИ-8 каждый символ кодируется 8 бит. Вова хотел написать текст (в нём нет лишних пробелов):
«Скользя по утреннему снегу,
друг милый, предадимся бегу
нетерпеливого коня и навестим поля пустые…»
Одно из слов ученик написал два раза подряд через пробел. При этом размер написанного предложения в данной кодировке оказался на 14 байт больше, чем размер нужного предложения. Напишите в ответе лишнее слово.
10. Растровое изображение размером 512х720 пикселей занимает 90 Кбайт памяти. Определите количество цветов в палитре, с помощью которой было закодировано данное изображение.
11. Монитор поддерживает 16-цветовую палитру и вмещает изображение размером 480х640 пикселей. Определите объём видео памяти, необходимый для хранение полноформатного изображения исходя из особенностей данного монитора. Ответ дайте в килобайтах.
12. Определите объём видеопамяти, необходимый для хранения изображения 1024х768 пикселей с палитрой 16 777 216 цветов.
13. Чёрно-белый графический файл (без градаций серого цвета) имеет размер 100х100 пикселей. Определите его информационный объём.
14. Страница видеопамяти составляет 16 000 байт. Дисплей работает в режиме 320х400 пикселей. Сколько цветов в данной палитре?
15. Чёрно-белый графический файл с 32 градациями серого цвета имеет размер 64х32 пикселя. Какое максимально возможное число таких файлов можно записать на флеш-носитель ёмкостью 1024 Кбайта?
Краткое объяснение кодирования текстовой информации. Информатика
Содержание:
Кодирование текстовой информации — очень распространенное явление. Один и тот же текст может быть закодирован в нескольких форматах. Принято считать, что кодирование текстовой информации появилось с приходом компьютеров. Это и так и не так одновременно. Кодировка в том виде, в котором мы ее знаем, действительно к нам пришла с приходом компьютеров. Но над самим процессом кодирования люди бьются уже много сотен лет. Ведь, по большому счету, сама письменность уже является способом закодировать человеческую речь, для ее дальнейшего использования. Вот и получается, что любая окружающая нас информация никогда не бывает представленной в чистом виде, потому что она уже каким-то образом закодирована. Но сейчас не об этом.
Кодирование текстовой информации
Самый распространенный способ кодирования текстовой информации — это ее двоичное представление, которое сплошь и рядом используется в каждом компьютере, роботе, станке и т. д. Все кодируется в виде слов в двоичном представлении.
Сама технология двоичного представления информации зародилась еще задолго до появления первых компьютеров. Среди первых устройств, которые использовали двоичный метод кодирования, был аппарат Бодо — телеграфный аппарат, который кодировал информацию в 5 битах в двоичном представлении. Суть кодировки заключалась в простой последовательности электрических импульсов:
В компьютерный мир такая кодировка пришла вместе с персонализацией самих компьютеров. То есть в первых компьютерах не было такой кодировки. Но как только компьютеры стали уходить «в массы», то резко обнаружилась потребность обрабатывать компьютерами большое количество именно текстовой информации, которую нужно было как-то кодировать. Тенденция обрабатывать большое количество текстовой информации сохранилась и в современных устройствах.
Так получилось, что двоичное кодирование в компьютерах связано только с двумя символами «0» и «1», которые выстраиваются в определенной логической последовательности. А сам язык подобной кодировки стал называться машинным.
Кодирование текстовой информации и компьютеры
Для справки. Есть уникальный язык программирования, который в качестве своих операторов использует только пробелы, табуляции и переносы строки. Практического применения этот язык не имеет, но он есть.
Мы вводим текст в компьютер при помощи клавиатуры, символы которой мы прекрасно понимаем. Нажимая на какую-то букву, мы отправляем в оперативную память компьютера двоичное представление нажатых клавиш. Каждый отдельный символ будет представлен 8-битной кодировкой. Например буква «А» — это «11000000». Получается, что один символ — это 1 байт или 8 бит. При такой кодировке, путем нехитрых подсчетов можно посчитать, что мы можем зашифровать 256 символов. Для кодирования текстовой информации данного количества символов более чем предостаточно.
Кодирование текстовой информации в компьютерных устройствах сводится к тому, что каждому отдельному символу присваивается уникальное десятичное значение от 0 и до 255 или его эквивалент в двоичной форме от 00000000 и до 11111111. Люди могут различать символы по их внешнему виду, а компьютерное устройство только по их уникальному коду.
Рассмотрите, как происходит процесс. Мы нажимаем нужный нам символ на клавиатуре, ориентируясь на их внешний вид. В оперативную память компьютера он попадает в двоичном представлении, а когда компьютер его выводит нам на экран, то происходит процесс декодирования, чтобы мы увидели знакомый нам символ.
Кодирование текстовой информации и таблицы кодировок
Таблица кодировки — это место, где прописано какому символу какой код относится. Все таблицы кодировки являются согласованными — это нужно, чтобы не возникало путаницы между документами, закодированными по одной таблице, но на разных устройствах.
На сегодняшний день существует множество таблиц кодировок. Из-за этого часто возникают проблемы с переносом текстовых документов между устройствами. Так получается, что если текстовая информация была закодирована по одной какой-то таблице, то и раскодирована она может быть только по этой таблице. Если попытаться раскодировать другой таблицей, то в результате получим только набор непонятных символов, но никак не читабельный текст.
Как работают кодировки текста. Откуда появляются «кракозябры». Принципы кодирования. Обобщение и детальный разбор
Данная статья имеет цель собрать воедино и разобрать принципы и механизм работы кодировок текста, подробно этот механизм разобрать и объяснить. Полезна она будет тем, кто только примерно представляет, что такое кодировки текста и как они работают, чем отличаются друг от друга, почему иногда появляются не читаемые символы, какой принцип кодирования имеют разные кодировки.
Чтобы получить детальное понимание этого вопроса придется прочитать и свести воедино не одну статью и потратить довольно значительное время на это. В данном материале же это все собрано воедино и по идее должно сэкономить время и разбор на мой взгляд получился довольно подробный.
О чем будет под катом: принцип работы одно байтовых кодировок (ASCII, Windows-1251 и т.д.), предпосылки появления Unicode, что такое Unicode, Unicode-кодировки UTF-8, UTF-16, их отличия, принципиальные особенности, совместимость и несовместимость разных кодировок, принципы кодирования символов, практический разбор кодирования и декодирования.
Вопрос с кодировками сейчас конечно уже потерял актуальность, но все же знать как они работают сейчас и как работали раньше и при этом не потратить много времени на это думаю лишним не будет.
Предпосылки Unicode
Начать думаю стоит с того времени когда компьютеризация еще не была так сильно развита и только набирала обороты. Тогда разработчики и стандартизаторы еще не думали, что компьютеры и интернет наберут такую огромную популярность и распространенность. Собственно тогда то и возникла потребность в кодировке текста. В каком то же виде нужно было хранить буквы в компьютере, а он (компьютер) только единицы и нули понимает. Так была разработана одно-байтовая кодировка ASCII (скорее всего она не первая кодировка, но она наиболее распространенная и показательная, по этому ее будем считать за эталонную). Что она из себя представляет? Каждый символ в этой кодировке закодирован 8-ю битами. Несложно посчитать что исходя из этого кодировка может содержать 256 символов (восемь бит, нулей или единиц 2 8 =256).
Первые 7 бит (128 символов 2 7 =128) в этой кодировке были отданы под символы латинского алфавита, управляющие символы (такие как переносы строк, табуляция и т.д.) и грамматические символы. Остальные отводились под национальные языки. То есть получилось что первые 128 символов всегда одинаковые, а если хочешь закодировать свой родной язык пожалуйста, используй оставшуюся емкость. Собственно так и появился огромный зоопарк национальных кодировок. И теперь сами можете представить, вот например я находясь в России беру и создаю текстовый документ, у меня по умолчанию он создается в кодировке Windows-1251 (русская кодировка использующаяся в ОС Windows) и отсылаю его кому то, например в США. Даже то что мой собеседник знает русский язык, ему не поможет, потому что открыв мой документ на своем компьютере (в редакторе с дефолтной кодировкой той же самой ASCII) он увидит не русские буквы, а кракозябры. Если быть точнее, то те места в документе которые я напишу на английском отобразятся без проблем, потому что первые 128 символов кодировок Windows-1251 и ASCII одинаковые, но вот там где я написал русский текст, если он в своем редакторе не укажет правильную кодировку будут в виде кракозябр.
Думаю проблема с национальными кодировками понятна. Собственно этих национальных кодировок стало очень много, а интернет стал очень широким, и в нем каждый хотел писать на своем языке и не хотел чтобы его язык выглядел как кракозябры. Было два выхода, указывать для каждой страницы кодировки, либо создать одну общую для всех символов в мире таблицу символов. Победил второй вариант, так создали Unicode таблицу символов.
Небольшой практикум ASCII
Возможно покажется элементарщиной, но раз уж решил объяснять все и подробно, то это надо.
Вот таблица символов ASCII:
Тут имеем 3 колонки:
Unicode
С предпосылками создания общей таблицы для всех в мире символов, разобрались. Теперь собственно, к самой таблице. Unicode — именно эта таблица и есть (это не кодировка, а именно таблица символов). Она состоит из 1 114 112 позиций. Большинство этих позиций пока не заполнены символами, так что вряд ли понадобится это пространство расширять.
Разделено это общее пространство на 17 блоков, по 65 536 символов в каждом. Каждый блок содержит свою группу символов. Нулевой блок — базовый, там собраны наиболее употребляемые символы всех современных алфавитов. Во втором блоке находятся символы вымерших языков. Есть два блока отведенные под частное использование. Большинство блоков пока не заполнены.
Итого емкость символов юникода составляет от 0 до 10FFFF (в шестнадцатиричном виде).
Записываются символы в шестнадцатиричном виде с приставкой «U+». Например первый базовый блок включает в себя символы от U+0000 до U+FFFF (от 0 до 65 535), а последний семнадцатый блок от U+100000 до U+10FFFF (от 1 048 576 до 1 114 111).
Отлично теперь вместо зоопарка национальных кодировок, у нас есть всеобъемлющая таблица, в которой зашифрованы все символы которые нам могут пригодиться. Но тут тоже есть свои недостатки. Если раньше каждый символ был закодирован одним байтом, то теперь он может быть закодирован разным количеством байтов. Например для кодирования всех символов английского алфавита по прежнему достаточно одного байта например тот же символ «o» (англ.) имеет в юникоде номер U+006F, то есть тот же самый номер как и в ASCII — 6F в шестнадцатиричной и 111 в десятеричной. А вот для кодирования символа «U+103D5» (это древнеперсидская цифра сто) — 103D5 в шестнадцатиричной и 66 517 в десятеричной, тут нам потребуется уже три байта.
Решить эту проблему уже должны юникод-кодировки, такие как UTF-8 и UTF-16. Далее речь пойдет про них.
UTF-8 является юникод-кодировкой переменной длинны, с помощью которой можно представить любой символ юникода.
Давайте поподробнее про переменную длину, что это значит? Первым делом надо сказать, что структурной (атомарной) единицей этой кодировки является байт. То что кодировка переменной длинны, значит, что один символ может быть закодирован разным количеством структурных единиц кодировки, то есть разным количеством байтов. Так например латиница кодируется одним байтом, а кириллица двумя байтами.
Немного отступлю от темы, надо написать про совместимость ASCII и UTF
То что латинские символы и основные управляющие конструкции, такие как переносы строк, табуляции и т.д. закодированы одним байтом делает utf-кодировки совместимыми с кодировками ASCII. То есть фактически латиница и управляющие конструкции находятся на тех же самых местах как в ASCII, так и в UTF, и то что закодированы они и там и там одним байтом и обеспечивает эту совместимость.
Сравним на практике как будет выглядеть фраза «Hello мир» в трех разных кодировках: Windows-1251 (русская кодировка), ISO-8859-1 (кодировка западно-европейских языков), UTF-8 (юникод-кодировка). Суть данного примера состоит в том что фраза написана на двух языках. Посмотрим как она будет выглядеть в разных кодировках.
В кодировке ISO-8859-1 нет таких символов «м», «и» и «р».
Теперь давайте поработаем с кодировками и разберемся как преобразовать строку из одной кодировки в другую и что будет если преобразование неправильное, или его нельзя осуществить из за разницы в кодировках.
Будем считать что изначально фраза была записана в кодировке Windows-1251. Исходя из таблицы выше запишем эту фразу в двоичном виде, в кодировке Windows-1251. Для этого нам потребуется всего только перевести из десятеричной или шестнадцатиричной системы (из таблицы выше) символы в двоичную.
01001000 01100101 01101100 01101100 01101111 00100000 11101100 11101000 11110000
Отлично, вот это и есть фраза «Hello мир» в кодировке Windows-1251.
Теперь представим что вы имеете файл с текстом, но не знаете в какой кодировке этот текст. Вы предполагаете что он в кодировке ISO-8859-1 и открываете его в своем редакторе в этой кодировке. Как сказано выше с частью символов все в порядке, они есть в этой кодировке, и даже находятся на тех же местах, но вот с символами из слова «мир» все сложнее. Этих символов в этой кодировке нет, а на их местах в кодировке ISO-8859-1 находятся совершенно другие символы. А конкретно «м» — позиция 236, «и» — 232. «р» — 240. И на этих позициях в кодировке ISO-8859-1 находятся следующие символы позиция 236 — символ «ì», 232 — «è», 240 — «ð»
Значит фраза «Hello мир» закодированная в Windows-1251 и открытая в кодировке ISO-8859-1 будет выглядеть так: «Hello ìèð». Вот и получается что эти две кодировки совместимы лишь частично, и корректно перекодировать строку из одной кодировке в другую не получится, потому что там просто напросто нет таких символов.
Тут и будут необходимы юникод-кодировки, а конкретно в данном случае рассмотрим UTF-8. То что символы в ней могут быть закодированы разным количеством байтов от 1 до 4 мы уже выяснили. Теперь стоит сказать что с помощью UTF могут быть закодированы не только 256 символов, как в двух предыдущих, а вобще все символы юникода
Работает она следующим образом. Первый бит каждого байта кодирующего символ отвечает не за сам символ, а за определение байта. То есть например если ведущий (первый) бит нулевой, то это значит что для кодирования символа используется всего один байт. Что и обеспечивает совместимость с ASCII. Если внимательно посмотрите на таблицу символов ASCII то увидите что первые 128 символов (английский алфавит, управляющие символы и знаки препинания) если их привести к двоичному виду, все начинаются с нулевого бита (будьте внимательны, если будете переводить символы в двоичную систему с помощью например онлайн конвертера, то первый нулевой ведущий бит может быть отброшен, что может сбить с толку).
Если первый бит не нулевой то символ кодируется несколькими байтами.
Для двухбайтовых символов первые три бита должны быть такие — 110
для трех-байтовых символов в первом байте ведущие биты — 1110
1110 1000 10 000111 10 1010101 — суммируем все кроме управляющих битов и получаем что в 16-ричной равно 103В5, U+103D5 — древнеперситдская цифра сто ( 10000001111010101 )
для четырех-байтовых символов в первом байте ведущие биты — 11110
11110 100 10 001111 10 111111 10 111111 — U+10FFFF это последний допустимый символ в таблице юникода ( 100001111111111111111 )
Теперь, при желании, можем записать нашу фразу в кодировке UTF-8.
UTF-16
UTF-16 также является кодировкой переменной длинны. Главное ее отличие от UTF-8 состоит в том что структурной единицей в ней является не один а два байта. То есть в кодировке UTF-16 любой символ юникода может быть закодирован либо двумя, либо четырьмя байтами. Давайте для понятности в дальнейшем пару таких байтов я буду называть кодовой парой. Исходя из этого любой символ юникода в кодировке UTF-16 может быть закодирован либо одной кодовой парой, либо двумя.
Начнем с символов которые кодируются одной кодовой парой. Легко посчитать что таких символов может быть 65 535 (2в16), что полностью совпадает с базовым блоком юникода. Все символы находящиеся в этом блоке юникода в кодировке UTF-16 будут закодированы одной кодовой парой (двумя байтами), тут все просто.
символ «o» (латиница) — 00000000 01101111
символ «M» (кириллица) — 00000100 00011100
Теперь рассмотрим символы за пределами базового юникод диапазона. Для их кодирования потребуется уже две кодовые пары (4 байта). И механизм их кодирования немного сложнее, давайте по порядку.
Для начала введем понятия суррогатной пары. Суррогатная пара — это две кодовые пары используемые для кодирования одного символа (итого 4 байта). Для таких суррогатных пар в таблице юникода отведен специальный диапазон от D800 до DFFF. Это значит, что при преобразовании кодовой пары из байтового вида в шестнадцатиричный вы получаете число из этого диапазона, то перед вами не самостоятельный символ, а суррогатная пара.
Чтобы закодировать символ из диапазона 10000 — 10FFFF (то есть символ для которого нужно использовать более одной кодовой пары) нужно:
Для примера зашифруем символ, а потом расшифруем. Возьмем древнеперсидскую цифру сто (U+103D5):
Один символ текста обычно кодируется чем
1. Пользуясь таблицей кодировки ASCII и CP-1251 закодируйте следующие послания:
2. В некоторой кодировке для хранения одного символа отводится 2 байта. Определите вес слова из двадцати двух символов в данной кодировке.
3. В кодировке КОИ-8 для хранения одного символа отводится 1 байт. Определите вес (в битах) слова «дезоксирибонуклеиновая».
4. Некоторый текст записан в различных кодировках. Известно, что текс в 16-битной кодировке Unicode, на 120 бит больше текста, закодированного 8-битной кодировкой CP-1251. Определите количество символов в тексте.
5. В кодировке Unicode для хранения одного символа отводится 16 бит. Дан отрывок текста, записанного в данной кодировке:
«Калининград, Ярославль, Владимир, Елабуга, Троицк, Томск, Омск, Уфа – города России».
В результате редактирования текста, одно слово и ставшие лишними пробелы и запятые удалили. Новый текст стал на 14 байт меньше. Определите удалённое слово.
6. Текст, напечатанные на компьютере занял несколько страниц. Каждая страница текста состоит из 60 строк по 30 символов в строке. Файл с данным текстом занимает в компьютере 225 Кбайт. Сколько страниц содержит данный текст, если известно, что он закодирован в Unicode.
7. В кодировке Windows-1251 каждый символ кодируется 8 бит. Вова хотел написать текст (в нём нет лишних пробелов):
«Скользя по утреннему снегу,
Друг милый, предадимся бегу
И навестим поля пустые…»
Одно из слов ученик написал два раза подряд через пробел. При этом размер написанного предложения в данной кодировке оказался на 10 байт больше, чем размер нужного предложения. Напишите в ответе лишнее слово.
9. В кодировке КОИ-8 каждый символ кодируется 8 бит. Вова хотел написать текст (в нём нет лишних пробелов):
«Скользя по утреннему снегу,
друг милый, предадимся бегу
нетерпеливого коня и навестим поля пустые…»
Одно из слов ученик написал два раза подряд через пробел. При этом размер написанного предложения в данной кодировке оказался на 14 байт больше, чем размер нужного предложения. Напишите в ответе лишнее слово.
10. Растровое изображение размером 512х720 пикселей занимает 90 Кбайт памяти. Определите количество цветов в палитре, с помощью которой было закодировано данное изображение.
11. Монитор поддерживает 16-цветовую палитру и вмещает изображение размером 480х640 пикселей. Определите объём видео памяти, необходимый для хранение полноформатного изображения исходя из особенностей данного монитора. Ответ дайте в килобайтах.
12. Определите объём видеопамяти, необходимый для хранения изображения 1024х768 пикселей с палитрой 16 777 216 цветов.
13. Чёрно-белый графический файл (без градаций серого цвета) имеет размер 100х100 пикселей. Определите его информационный объём.
14. Страница видеопамяти составляет 16 000 байт. Дисплей работает в режиме 320х400 пикселей. Сколько цветов в данной палитре?
15. Чёрно-белый графический файл с 32 градациями серого цвета имеет размер 64х32 пикселя. Какое максимально возможное число таких файлов можно записать на флеш-носитель ёмкостью 1024 Кбайта?
Блог учителя информатики и математики Елистратовой Натальи Владимировны
Сайт-копилка. Сохраняю здесь свой опыт. Будет полезен ученикам для выполнения заданий на уроке и дома, и учителям, которые могут найти здесь много идей для проведения своих уроков.
Страницы
четверг, 29 октября 2020 г.
Разбор решения первого задания ОГЭ информатика
Как решать 1 задание по информатике ОГЭ
Для решения этого задания надо вспомнить единицы измерения информации:
Затем, 1 байт = 8 бит.
А следующие единицы выражаются так:
1 Килобайт (Кб) = 1024 байта
1 Мегабайт(Мб) = 1024 килобайтов (Кб).
И, принципе, это и достаточно.
Задача. (с сайта РЕШУ ОГЭ).
В одной из кодировок UTF-32 каждый символ кодируется 32 битами. Петя написал текст (в нём нет лишних пробелов):
«Ель, кедр, сосна, кипарис, лиственница, можжевельник — хвойные растения».
Ученик вычеркнул из списка название одного из растений. Заодно он вычеркнул ставшие лишними запятые и пробелы — два пробела не должны идти подряд.
Сначала хочу сказать, что ученик вычеркивает слово, запятую и пробел.
32 бита делим на 8 (потому что в 1 байте 8 бит) и получаем 4 байта, которые занимает ОДИН символ. (32:8=4). Зачем нам байты? Затем, что размер нового предложения стал меньше на 20 байт. А единицы измерения у символа и предложения должны быть одинаковые.
Вот, это самое важное! Единицы измерения должны быть одинаковые.
Теперь 20 байт (то, что уменьшилось) делим на 4 байта (1 символ) и получаем 5. Что такое 5? Это 5 символов, которые вычеркнул ученик. Но из них один пробел и одна запятая.
Поэтому из 5 вычитаем 2 (пробел и запятую). И получаем 3. Это и есть количество букв в вычеркнутом слове.
Какое слово состоит из трех букв? Смотрим на список слов. И видим, что это ЕЛЬ.