Рейтинг:  5 / 5

Звезда активнаЗвезда активнаЗвезда активнаЗвезда активнаЗвезда активна
 

Мы с Вами прошли вкратце тему, носящую название "Информация и ее кодирование". Поэтому Мы рассмотрим некоторые типычные примеры по данной теме с моими обьяснениями, которые часто встречаются (например в экзамене ЕГЭ по информатике и ИКТ (Примеры взяты от туда)). Следующий материал будет содержать тест, который Вы можете пройти и узнать свой уровень знаний по данной теме (Тест бесплатный и не требует регистрации.)

№1

Даны числа 3110 338 418 4916. Сколько из этих чисел в двоичной системе будут содержать 4 и более единиц?

1) 1

2) 2

3) 3

4) 4

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

Мы видим, что нам подходят только первые 2 числа. Значит, ответ 2.

№2

Автоматическое устройство осуществило перекодировку информационного сообщения из 16-битной кодировки Unicode в 8-битную Windows 1251. При этом информационный обьем сообщения уменьшился на 24 байта. Сколько бит было в первоначальном сообщении?

1)192

2)768

3)384

4)48

Прочитав это задание Вы, наверное, почти ничего не поняли. Что такое кодировки? Что дает битность? Наверняка у Вас возникли эти и другие подобные вопросы. Про кодировки мы подробнее поговорим на теме символы, но что нужно знать, чтобы решить данную и другие подобные задачи, я Вам сейчас обьясню.

Кодировки бывают 2 типов. Это однобайтовые и многобойтовые.

Какое-то время назад была разработана одна из первых кодировок ASCII (American Standart Code for Information Interсhangle) (она является 8-битной кодировкой). Вней первые 33 символа - это символы управления (среди которых есть символ пробела, символ перехода на новую строку идр.) Также в ней содржатся символы знаков препинания, скобки идр. А так же содержится полностью английский алфафит. В итоге в кодировке ASCII первые 128 символов отвели на вышеуказанные символы, а остальные 128 символов отвели на нужды других языков (то есть на базе этой кодировки из 128 символов создавались другие кодировки для разных языков (например российская кодировка от фирмы Microsoft это Windows 1251), дополняя ее своими символами). Но это было крайне не удобно. Ведь, если бы Вы в то время поехали в другую страну без компьютера и Вам бы приспичело проверить вашу электронную почту, например, или зайти на русский сайт, то Вы бы увидели непонятный набор символов, в совокупности который не дает никакого смысла. ( ведь в русской кодировке символ "А" кодируется своей цифрой, а, например, китайской кодировке на данном номере стоит уже другой символ).

Однако В предалах одной страны это очень удобно. (Например, Вы некогда не задумывались, почему, если набирать сообщение в телефоне на английской раскладке, то оно может вместить 160 символов, а, если на русской, то 70? Дело в том, что в телефоне это происходит из-за выше приведенного случая. Ведь вдруг пишете сообщение своему другу, живущему в другой стране, тогда он не сможет его прочесть) Из-за этих побуждений и была разработана более совершенная кодировка Unicode, в которой каждый символ кодируется 2 байтами (16 бит на один сивол) и она уже вмещает 65 536 символов, среди которых есть, и весь русский алфавит, и китайский, и немецкий, и др. Благодаря ему Вы с легкостью сможете открыть китайский сайт в россии, прочитать немецкое сообщение, пришедшее Вам на почту и многое другое. Данная кодировка стала стандартом для всех компьютеров (ну почти для всех. Некоторые компьютере на OS Linux работают только с однобайтовыми кодировками).

Есть еще одна кодировка это UTF32, вмещающая 4 294 967 296 символов, но при этом на один символ ей нужно 32 бита.

Так вот в заданиях подобного рода Вам будет дана подсказка по решению данной задачи. Часто в самом названии содержится кол-во битов на символ (UTF8, UTF16, UTF32, КОИ-8 и др. Если имеется ввиду двубайтовая кодировка, то это зачастую Unicode) Или же пишут битность кодировке. В нашей задаче написана битность.

Начнем анализировать данную задачу. Перевели код из 16-битной кодировке в 8-битную и обьем уменьшился на 24 байта. Поскольку битность новой кодировке меньше в 2 раза, чем оригинальная, то мы можем утверждать, что кол-во символов, которое было в сообщении - это 24 символа. Поскольку сообщение было первоначально записано в кодировке Unicode (на один символ требуется 2 байта или 16 бит), то кол-во символов мы должны умножить на 16 (чтобы получить обьем в битах) или на 2, чтобы получить обьем в байтах. У нас в задании требуются биты, значит, домножим на 16 и получим 384 бита. Это и есть ответ.

№3

Считая, что каждый символ кодируется 2 байтами, оцените обьем слудующего предложения в кодировке Unicode:

"Я люблю язык программирования PascalABC.NET"

1)43 символа

2) 688 бит

3) 702 бита

4)679 бит

Если дается предложение из двух строк, то я считаю, что бодобного рода задания невозможно решить. В данном случае решение данного задания очень элементарно. Нужно посчитать количество символов в предложении ( в нашем случае это 43 символа) и подобрать подходящий вариант.

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

Четвертый вариант тоже не подходит, поскольку в нем нечетное количество бит, а кодировка двубайтовая, значит, число должно нацело делиться на 2.

Остается 2 варианта 2 и 3. Умножив количество символов на битность кодировки 43*16=688, мы получим ответ.

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

Да, его учитывать нужно, единственное мы не знаем, во сколько бит его оценить. Дело в том, что в разных операционных системах дело обстоит по разному. В операционных системах Windows переход на новую строку кодируется двумя символами 10 и 13 по кодировку ASCII. В OS Linux и во всех его производных ( в том числе и IOS (Которая тоже является потомком Linux) переход на новую строку кодируется одним символом 10 по таблицы ASCII. Я говорю об этом же. В какой О.С. мы находимся? Во сколько битов нам оценивать переход на новую строку в 8 или 16 бит (это если кодировка однобайтовая)? Обычно в задании не говорится об О.С., которая нам дана. Поэтому данное задание в данном случае не решимо.

№4

Некоторое изделие маркируется номером длинной в 9 символов, состоящим из 18 различных букв и десятичных цифр в любом порядке.

Кождый номер записывается в программе минимальновозможным и одинаково целым количеством байт (при этом используется посимвольное кодирование и все символы кодируются минимально возможным количеством бит).

Определите обьем памяти, отводимы для записи этой программы 120 таких номеров:

1)675 байт

2)720 байт

3) 1080 байт

4)2430 байт

Если в предыдущем условии Мы исходили от кодировки (от ее битности), то в данном задании нам, по сути, нужно "Создать" собственную кодировку для решения.

Поскольку все символы кодируются одинаковым количеством бит, то для начала нам нужно посчитать количество символов в нашей кодировке. В задании сказано: "используется 18 различных букв и десятичные цифры". Итого 18+10 = 28 символов нужно нашей кодировке. Поскольку нам не важно (по условию) в каком порядке будут идти символы в кодировке, то нам нужно узнать, сколько бит будет приходиться на 1 символ. Поскольку у нас 28 символов в кодировке, то, значит, максимальных номер символа - это 28. Переведем его в двоичную систему и посмотрим сколько нам потребуется цифр для записи данного числа в двоичной системе

Мы получили, что для записи числа 28 потребуется 5 символов/бит. Поскольку каждый символ кодируется одинаковым числом бит, то, значит, что и любой другой символ в данной кодировке должен кодироваться 5 битами.

Посчитать эти же 5 бит можно было и проще для этого необходимо взять минимальную степень m двойки, чтобы выполнялось равенство 28<2m. А это как раз 5.

Мы посчитали количество бит необходимых для кодирования 1 символа. Теперь посчитаем количество бит на один номер. Для этого умножим 9 на 5 и получим 45 бит.

Поскольку в условии сказано, что каждый такой номер записывается минимально возможным количеством байт, то мы должны разделить 45 на 8 на цело. Поскольку 45/8=5.625, а такого количества байт быть не может, то мы должны это число округлить в большую сторону до целого (то есть до 6).

Мы нашли количество байт на один номер. Теперь вычислим обьем памяти необходимый для записи 120 номеров. Для этого умножим 120 на 6 и получим 720. Это и есть ответ.

№5

Сколько гигобайт информации содержит сообщение обьемом 235 бит

1)1 ГБ.

2)2Гб.

3)4 Гб.

4) 8Гб.

Для того, чтобы решить данную задачу нужно всего лишь навсего перевести данное количество бит в гигобайты. Мы можем возвести 2 в степень 35, а затем уже делить на 8, 1024, но все это степени двойки (  8 -3, 1024 - 10). Мы просто можем вычитать из 35 нужные нам степени, а потом возвести двойку в степень остатка.

Для перевода из бит в байты нужно разделить на 8, тоесть 23. Получим 35-3=32 байта.

Переводы в последующие единицы осуществляются делением на 1024 или же 210. Получим 32-10=22 Килобайта

22-10=12 Мегабайтов

12-10=2 Гигабайта.

Для завершения решения нужно возвести 2 во 2 степень. 22=4.

Ответ 4.

№6

Дано а=1778 и б=7316. Какое из чисел в, записанных в двоичной системе счисления, отвечает условию а>б>в?

1)11111112

2)11101102

3)11011102

4)11100102

Для решения данной задачи можно перевести все числа в десятичную систему счисления (но это решение будет очень громоздким, да и в нем очень легко ошибиться), а можно все перевести в двоичную систему счисления и сравнивать эти числа в двоичной системе.

Очевидно первые два варианта не подходят, поскольку это и есть представление наших чисел в двоичной системе.

Четвертый вариант тоже не подходит, поскольку очевидно 11100102<11101102. Следовательно подходит 3 вариант.

Очень много аналогичных задач, где нужно слажить 2 числа в разных системах счисления. Решение в таких задачах аналогичное.

1)Перевести все числа в одну и ту же систему счисления (в большинстве случаев в двоичную систему счисления)

2) Сложить эти числа.

№7

Световое табло состоит из ломпочек.Каждая лампочка может находится в одном из 3 состояний ("включена", "Выключена", "Мигает"). Какое наименьшее количество лампочек должно находится на табло, чтобы с его помощью можно было передать 14 различных сигналов?

Решение:

Очевидно, если у лампочки 3 состояния, то она может передавать <=3 сигнала. Рассмотрим ситуацию для 2 лампочек:

Пусть к - включена, ы - выключена, и - мигает. Тогда возможны случаи:

1) ии

2)иы

3)ик

4)ыи

5)ыы

6)ык

7)ки

8)кы

9)кк

Для двух лампочек мы получили 9 вариантов, для одной - 3. Очевидно имеет место формула:

Количество вариантов=NM, где N - количество состояний, M - количество обьектов.

Поскольку ни 3, ни 9 не больше 14, то, очевидно 33 должно подойти. Это как раз 27. Более меньше степени тройки, чтобы выполнялось равенство 3M>=14, где M - степень, мы не найдем. Следовательно правильный ответ это 3 лампочки.

№8

Скорость передачи данных через  WAP-соединение равна 128 000 бит/с. Передача файла через данное соединение заняла 2 минуты 40 секунд. Определите размер файла в килобайтах.

Решение:

Для решения подобного класса задач необходимо пользоваться всего-навсего одной формулой:

I=t*V, Где V - скорость передачи данных, t - время передачи данных, I - информационных обьем файла, переданного за время t со скоростью V.

Естественно, эту формулу можно записывать и в другом виде, в зависимости от того, что нам нужно найти.

t=I/V

V=I/t

Нам нужно в данной задаче найти обьем файла. Следовательно нужно воспользоваться первой формулой I=V*t.

I=128 000 бит/с. * (2*60+40) c. = 128 000 бит/с. * 160 c. = 128 000 * 160 бит = 20 480 000 бит. = 2 560 000 байт = 2 500 Килобайт.

Вот Мы и получили правилььный ответ 2 500 килобайт. В задачах подобного рода не нужно учитывать: били ли сбои при передаче, были же повышение/понижение скорости и многое другое. Если же это и нужно, то в условии самой задачи это будет указано (например: Петя скачивал файл из Интернета со скоростью 200 000 бит/с. 1 минуту 28 секунд, после чего скорость интернета возрасла на 85 000 бит/с. и остаток файла докачался за 68 секунд. Найти обьем файла в мегабайтах, округлив до целого.

Решение данного примера:

Для решения данной задачи нужно отдельно посчитать обьемы, скачанные на разных скоростях и их сложить. Чтобы было быстрее, посчитаем это одной формулой:

I = 200 000бит/c. *(1*60 + 28)c.+ 285 000бит/c.*68c. = 200 000бит/c.*88c.+ 285 000*68бит = 200 000*88бит+19 380 000бит = 17 600 000 бит + 19 380 000бит = 36 980 000бит = 4 622 500байт = 4 514, 16 килобайт = 4,4 мегабайта~=4 мегабайта.

Ответ 4 мегабайта)

№9

Все пятибуквенные слова, составленные из букв А, О, Р, записаны в алфавитном порядке. Вот начало списка:

1. ААААА

2. ААААО

3. ААААР

4. АААОА

5. АААОО

... ...

Запишите слово, которое стоит на 235-ом месте от начала списка.

Решение:

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

0 - А

1 - О

2 - Р

Тогда мы можем записать начало списка в новой системе счиления:

1. 00000

2. 00001

3. 00002

4. 00010

5. 00011

...

Обратим внимание: на второй строке стоит цифра 1 (в троичной системе), на третьей строке - 23, первой строке - 0, на четвертой строке - 3 (в троичной системе)...

Я думаю, Вы поняли, к чему я клоню: для того чтобы узнать слово, стоящее на 235- ом месте, нужно это число, меньшее на 1, перевести в троичнуюю(по нашему заданию) систему и перевести число в буквы обратно.

 

Мы получили 222003. Теперь все цифры обратно переведем в буквы по той же схеме и получим РРРАА, что и является правильным ответом.

 

Вот я привел некоторые типовые задачи с решениями на данную тему. Если Вы хотите, то можете прорешать тест по данной теме, который идет следующим в меню нашего сайта ( тест может быть еще не опубликованным, поэтому просьба подождать). Далее мы, наконец, начнем изучать язык программирования Pascal ABC.NET, разработанный специально для обучения программированию. Мы будем обучать именно ему, посколько все равно все наши знания по данному языку в той или иной степени перейдут в другие языки программирования, которые мы тоже будем учить вместе с Вами.