Таблица символов ASCII для распечатки и работы на уроке информатики

Таблица ASCII и как её использовать – Заметки Сис.Админа

Таблица символов ASCII для распечатки и работы на уроке информатики

Приветствую всех. Как Вы поняли из заголовка, сегодня мы поговорим про то, что такое таблица ASCII и как её можно использовать.

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

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

Впрочем, давайте поподробнее.

Помимо зараженного дома вирусами (а кейлогер и есть вирус) компьютера подобная проблема особенно актуальна в интернет-кафе и компьютерных клубах.

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

Сегодня я расскажу Вам о том как собрать пароль, устойчивый от воровства при помощи программ keyloger'ов (клавиатурные шпионы запоминающие вводимые Вами символы в формах логинов и паролей) и просто запоминания (если Вы вдруг вводите пароль при ком-то) кем бы то ни было.

К тому же многим будет интересно узнать о вводе с клавиатуры специфичных символов (как пару примеров: û ~ Ç ╟↓ ∟ П ┬ и тд и тп) без всяких сторонних программ, что кстати очень просто, но известно в основном только людям, связанным с компьютерами в качестве профессии.

Таблица ASCII как использовать расширенные символы

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

Не для кого не секрет, что все вводимые буквы и цифры – это символы. Но символы можно разделить на два вида – простые и специфичные (расширенные). Простые – это, как я уже сказал, буквы, цифры, всякие там знаки препинания, собачки (@) и тд и тп, а специфичные – это что-то вроде û ~ Ç ╟↓ ∟ П ┬ и тд и тп.

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

Все это чудесно, но Вы не знаете кое о чем, а именно о том, что помимо разных символов есть разные способы их ввода.

Точнее говоря, любую букву, цифру, знак препинания и тд и тп, тобишь любой символ можно ввести не просто вполне естественным образом (естественный способ для простого пользователя – это тычок пальчиком в соответствующую кнопку на клавиатуре), а еще и методом использования кнопки ALT и цифровой клавиатуры, а именно нажатие ALT+35 (где кнопка ALT зажата, а 35 вводится на цифрах (плюс жать не надо)) даст символ #.

Сочетание ALT+147 даст Вам букву У. Собственно, подобным образом можно вводить и специфичные символы, а именно, скажем ☺ – это нажатие ALT+1 , а ▀ – это ALT+1247 и тд и тп.

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

Кстати о расширенных символах. Среди них есть такая вещь как неразрывный пробел- ALT+0160. Он отображается как обычный пробел и зачастую может обмануть тех, кто каким-то образом подглядел Ваш пароль.

Даже, если Ваш пароль будет записан кейлогером, то в лог-файле он (неразрывный пароль) будет выглядеть, как обычный пробел, что собьет с толку взломщика особенно, если он ведать не ведает ни о каких специфичных символах и неразрывных пробелах, т.е., даже получив пароль он не сможет им воспользоваться.

Подводные камни при таком подходе

Они не такие страшные, но без них, к сожалению, никак.

  • Как Вы понимаете создание пароля со специфичными символами или ввод его по средством ALT+цифры требует большего нажатий клавиш, что тоже требует запоминания в первую очередь Вами самими (т.е. пароль из 5 символов будет требовать, например, 25 нажатий клавиш (ALT+1256, ALT+2341 и тд). Возможно проще было бы не заморачиваться и просто удлинить обычный пароль на несколько обычных символов. Это во-первых;
  • Во-вторых, клавиатуры некоторых компьютеров (зачастую эта проблема наблюдается в ноутбуках) затрудняют ввод с цифровой клавиатуры;
  • В-третьих, некоторые утилиты командной строки не поддерживают символы с большим ASCII-кодом. Например, вы можете использовать символ ALT+0127 в Windows, но не сможете набрать его в командной строке. И наоборот, коды некоторых символов, таких как Tabs (ALT+0009) или ESC (ALT+0027) могут быть использованы в cmd (командной строке), но совершенно никак не получится задействовать их в самой Windows.

Давайте перейдем к послесловию

Послесловие

Вот такие пироги про такую штуку как таблица ASCII и её использование для создания паролей (и не только).

Надеюсь, что эта статья Вам пригодится. Как и всегда, если есть какие-то вопросы, мысли, дополнения и всё такое прочее, то добро пожаловать в комментарии к этой статье.

Источник: https://sonikelf.ru/sovsem-krepkie-paroli-ili-simvoly-s-bolshim-ascii-kodom/

Строки: таблица символов ASCII и её использование

Таблица символов ASCII для распечатки и работы на уроке информатики

В этой статье мы детально рассмотрим таблицу символов ASCII и как ее можно использовать.

Также мы рассмотрим несколько новых функций, принцип работы которых основан на специфике строения таблицы ASCII, и в конце создадим новую библиотеку, в которую включим эти функции.

Они достаточно популярны в других языках программирования, но их нет среди встроенных функций языка MQL4. Кроме того, мы очень детально разберем основы работы со строками, так что, я думаю, вы обязательно узнаете что-нибудь новое про этот полезный тип данных.

Что такое ASCII ?

ASCII – Американский стандарт кодирования для передачи информации (American Standard Code for Information Interchange). Этот стандарт основан на английском алфавите. Коды ASCII представляют текст в компьютерах, коммуникационном оборудовании и других устройствах, которые работают с текстом.

ASCII был создан в 1963 году, но впервые опубликован как стандарт в 1967 году. Последние изменения были внесены в 1986 году. Более детальную информацию про ASCII вы можете почитать здесь: https://en.wikipedia.org/wiki/ASCII.

Далее мы рассмотрим как можно полностью вывести ASCII средствами MQL4, но для начала давайте рассмотрим основы работы со строками.

Основы построения библиотеки

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

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

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

#property copyright “Copyright © 2007, Antonio Banderass. All rights reserved” #property link      “banderassa@ukr.net” int start()   {    string s1 = “Just_a_string”, s2, symbol = “s”;    int lenght = StringLen(s1);    MessageBox(s1);    for(int x = 0; x < lenght; x++)      {        symbol = StringSetChar(symbol, 0, StringGetChar(s1, x));        s2 = s2 + symbol + " ";      }    MessageBox(s2);    return(0);   }

Разберем значение каждой строки отдельно.

string s1 = “Just_a_string”, s2, symbol = “s”;

Определяем три переменные типа string:

  • s1 – начальная строка, которую мы хотим обработать;
  • s2 – строка, в которую будет выведен результат;
  • symbol – строка, которая используется для временного хранения каждого символа.

Обратите внимание на то, что она инициализируется одним символом. Если этого не сделать, то в результате получим строку, в которой нет первого символа. Дело в том, что стандартная функция языка MQL4 StringSetChar() изменяет уже созданные символы, поэтому требуется хотя бы один символ для нормальной работы.

int lenght = StringLen(s1);Определяем переменную целого типа для хранения длины строки. Для этого сразу же вызываем стандартную функцию для определения длины строки StringLen(), которая имеет единственный параметр – строку, длину которой требуется узнать.
Выводим строку до обработки. for(int x = 0; x < lenght; x++) Определяем цикл, в котором будет производиться посимвольная обработка. Обратите внимание, что счетчик инициализируется нулем, так как символы в строке индексируются с нуля, так же как и в массивах. В условии выполнения цикла используется оператор сравнения "меньше", так как последний символ имеет позицию lenght - 1. symbol = StringSetChar(symbol, 0, StringGetChar(s1, x));

В этой строке используется две стандартные функции: StringSetChar() и StringGetChar(). Первая позволяет заменить один из символов строки, а вторая получить код символа в указанной позиции. Функция StringSetChar() имеет три параметра:

  • строку, в которой требуется произвести замену символа;
  • позиция символа, который следует заменить (помните, что символы индексируются с нуля, как в массивах);
  • код символа, которым следует произвести замену.

Функция возвращает результат в виде уже измененной строки. Еще одна важная функция – StringGetChar. Она имеет два параметра:

  • строку, в которой содержится символ, код которого нужно узнать;
  • позиция символа, код которого следует узнать.

Функция возвращает код символа. Так как функция StringGetChar возвращает код символа, то я разместил ее вызов на месте параметра функции StringSetChar. Таким образом с помощью этой строки мы запоминаем текущий символ для дальнейшей обработки. В ходе выполнения всего цикла этой переменной будет по очереди присвоен каждый символ строки s1.

s2 = s2 + symbol + ” “; Мы можем без проблем связывать строки (конкатенация) с помощью операций сложения (+). Здесь при каждой итерации цикла мы добавляем к результирующей строке очередной символ и пробел.
MessageBox(s2); Выводим результат. Обратите внимание, что мы считываем каждый символ, начиная с первого, но можно поступить и наоборот. В таком случае получим меньше кода и переменных. Если при обработке строки для вас не имеет значения, с какой стороны начинать, то используйте следующий вариант:
#property copyright “Copyright © 2007, Antonio Banderass. All rights reserved” #property link      “banderassa@ukr.net” int start()   {    string s1 = “Just_a_string”, s2, symbol = “s”;    int lenght = StringLen(s1) – 1;    MessageBox(s1);    while(lenght >= 0)      {        symbol = StringSetChar(symbol, 0, StringGetChar(s1, lenght));        s2 = s2 + symbol + ” “;        lenght–;      }    MessageBox(s2);    return(0);   }

Как видно, теперь вместо цикла for используется while, что позволяет избавиться от счетчика x. Для этих целей используется переменная lenght.

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

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

Выводим все символы ASCII

Теперь давайте попробуем вывести все символов ASCII. Вспомните функции StringSetChar() и StringGetChar(), которые соответственно вставляют в указанную позицию символ из ASCII по его коду и возвращают код по символу. StringSetChar() имеет третий параметр int value. Это и есть код из таблицы символов ASCII.

Давайте напишем специальный скрипт, чтобы определить код каждого символа:
#property copyright “Copyright © 2007, Antonio Banderass. All rights reserved” #property link      “banderassa@ukr.

net” int start()   {    string s, symbol = “s”;    for(int x = 0; x < 256; x++)     {       symbol = StringSetChar(symbol, 0, x);       s = s + x + " = " + symbol + " \t";       if(x % 10 == 0)           s = s + " ";     }    MessageBox(s);    return(0);   }

Скрипт использует встроенные функции MQL4, а также строковые константы новой строки и табуляции для наглядного представления таблицы. Теперь скомпилируйте и запустите его. Вы должны увидеть таблицу символов ASCII:

Рассмотрите ее повнимательнее. Вы заметите абсолютно все символы, которые только могут понадобиться, от цифр и букв до специальных символов, некоторые из которых вы наверняка увидите впервые. Сначала идет код, а потом после знака “=” сам символ. Я выделил некоторые важные наборы символов для большей наглядности:

Обратите внимание на расположение букв. Они расположены в алфавитном порядке. Эту особенность мы скоро используем для написания некоторых функций, например, для перевода букв строки из верхнего регистра в нижний и наоборот. А теперь давайте займемся новыми функциями и в конце на их основе создадим библиотеку.

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

Это можно увидеть, если смотреть по таблице, что мы получили.

На практике, если попробовать узнать коды символов 'А','Я','а', 'я', например, с помощью такого кода

string s = “AZaz”; MessageBox(“A = ” + StringGetChar(s, 0)); MessageBox(“Z = ” + StringGetChar(s, 1)); MessageBox(“a = ” + StringGetChar(s, 2)); MessageBox(“z = ” + StringGetChar(s, 3));

то получим результаты: А = 192, Я = 223, а = 224 и я = 255 соответственно. Поэтому следует учесть и эту особенность. Рассмотрим исходный код функций:

string StringUpperCase(string str)   {    string s = str;    int lenght = StringLen(str) – 1, symbol;    while(lenght >= 0)      {        symbol = StringGetChar(s, lenght);        if((symbol > 96 && symbol < 123) || (symbol > 223 && symbol < 256))            s = StringSetChar(s, lenght, symbol - 32);        else            if(symbol > -33 && symbol < 0)                s = StringSetChar(s, lenght, symbol + 224);        lenght--;      }    return(s);   } string StringLowerCase(string str)   {    string s = str;    int lenght = StringLen(str) - 1, symbol;    while(lenght >= 0)      {        symbol = StringGetChar(s, lenght);        if((symbol > 64 && symbol < 91) || (symbol > 191 && symbol < 224))            s = StringSetChar(s, lenght, symbol + 32);        else            if(symbol > -65 && symbol < -32)                s = StringSetChar(s, lenght, symbol + 288);        lenght--;      }    return(s);   } Так как последовательность обработки не имеет никакого значения, используем цикл while. Применять функции очень просто, единственный параметр - строка которую следует привести к нужному регистру:
  string s1 = “UPPER_REGISTER_STRING”;   string s2 = “lower_register_string”;   string s3 = “БОЛЬШИЕ_БУКВЫ”;   string s4 = “маленькие_буквы”;   MessageBox(StringLowerCase(s1));   MessageBox(StringUpperCase(s2));   MessageBox(StringLowerCase(s3));   MessageBox(StringUpperCase(s4));

StringCompare

В MQL4 сравнение строк реализовано на уровне операторов с помощью “==”. Интересно, что сравнение является регистрозависимым, то есть строки “STRING” и “string” – разные:

if(“STRING” == “string”)       MessageBox(“TRUE”);    else       MessageBox(“FALSE”);

Если нужно сравнить две строки без учета регистра, воспользуйтесь функцией StringCompare. Она возвращает значения типа bool аналогично оператору сравнения. Сама реализация крайне проста. Сравниваются строки, которые до этого приведены к нижнему регистру:

bool StringCompare(string s1, string s2)   {     return(StringLowerCase(s1) == StringLowerCase(s2));   }

Пример использования:

if(StringCompare(“STRING”, “string”))       MessageBox(“TRUE”);    else       MessageBox(“FALSE”);

StringIsDigit

Эта функция проверяет содержимое строки. Если строка состоит только из цифр, то возвращает true, иначе false. Реализация довольно проста и основана на том, что символы цифр расположены в ряд и имеют коды от 48 до 58.

bool StringIsDigit(string str)   {    bool result = true;    string s = str;    int lenght = StringLen(str) – 1, symbol;    while(lenght > 0)      {        symbol = StringGetChar(s, lenght);        if(!(symbol > 47 && symbol < 58))          {            result = false;            break;          }        lenght--;      }    return(result);   }

Пример использования:

if(StringIsDigit(“1234567890”))       MessageBox(“TRUE”);   else       MessageBox(“FALSE”);   if(StringIsDigit(“1234notdigit”))       MessageBox(“TRUE”);   else       MessageBox(“FALSE”);

StringIsAlpha

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

bool StringIsAlpha(string str)   {    bool result = false;    string s = str;    int lenght = StringLen(str) – 1, symbol;    while(lenght > 0)      {        symbol = StringGetChar(s, lenght);        if((symbol > 96  && symbol < 123) || (symbol > 64 && symbol < 91) ||           (symbol > 191 && symbol < 256) || (symbol > -65 && symbol < 0))          {            result = true;            break;          }        lenght--;      }    return(result);   }

Пример использования:

if(StringIsAlpha(“thereAreSomeLetters”))       MessageBox(“TRUE”);   else       MessageBox(“FALSE”);   if(StringIsAlpha(“thereAreSomeDigits12345”))       MessageBox(“TRUE”);   else       MessageBox(“FALSE”);

Создание библиотеки

Теперь давайте соберем все эти функции в одну библиотеку. Для этого в редакторе MetaEditor 4 кликаем File->New->Library->Далее. В поле name пишем stringProcess и нажимаем на кнопку Готово.

Потом вставляем код всех функций, приведенных выше, затем сохраняем. Осталось создать файл с прототипами функций, для этого File->New->Include(*. MQH)->Далее. В поле name пишем stringProcess, -> Готово.

Теперь нужно вставить прототипы всех новых функций, а также указать директиву для импорта:

#property copyright “Antonio Banderass Copyright © 2007” #property link      “banderassa@ukr.net” #import “stringProcess.ex4” string StringUpperCase(string str); string StringLowerCase(string str); bool StringCompare(string s1, string s2); bool StringIsDigit(string str); bool StringIsAlpha(string str);

Использование библиотеки stringProcess

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

#property copyright “Antonio Banderass Copyright © 2007” #property link      “banderassa@ukr.net” #include int start()   {    if(StringIsDigit(“1234567890”))        MessageBox(“TRUE”);    else        MessageBox(“FALSE”);    if(StringIsDigit(“1234notdigit”))        MessageBox(“TRUE”);    else        MessageBox(“FALSE”);    return(0);   }

Заключение

Итак, вы узнали что такое таблица символов ASCII и каким образом можно использовать особенности ее строения для реализации новых функций. Вы написали новые функции, которые являются довольно популярными в других языках программирования, но которых нет в MQL4. На основе их вы создали небольшую библиотеку для обработки строк.

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

Удачи вам и профитов.

Источник: https://www.mql5.com/ru/articles/1474

Изучаем Информатику. 2 тема. Кодирование информации

Таблица символов ASCII для распечатки и работы на уроке информатики

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

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

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

Человек выражает свои мысли в виде предложений, составленных из слов. Они являются алфавитным представлением информации. Основу любого языка составляет алфавит – конечный набор различных знаков (символов) любой природы, из которых складывается сообщение.

Одна и та же запись может нести разную смысловую нагрузку. Например, набор цифр 251299 может обозначать: массу объекта; длину объекта; расстояние между объектами; номер телефона; запись даты 25 декабря 1999 года.

Для представления информации могут использоваться разные коды и, соответственно, надо знать определенные правила – законы записи этих кодов, т.е. уметь кодировать.

Код– набор условных обозначений для представления информации.

Кодирование– процесс представления информации в виде кода.

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

Кодировать информацию можно различными способами: устно; письменно; жестами или сигналами любой другой природы.

Картинка из интернета

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

Чаще всего применяют следующие способы кодирования информации: 

1) графический – с помощью рисунков или значков;

2) числовой – с помощью чисел:

3) символьный с помощью символов того же алфавита, что и исходный текст. 

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

Действия по восстановлению первоначальной формы представления информации принято называть декодированием. Для декодирования надо знать код.

Кодирование текстовой информации

Если каждому символу алфавита сопоставить определенное целое число (например, порядковый номер), то с помощью двоичного кода можно кодировать и текстовую информацию. Для хранения двоичного кода одного символа выделен 1 байт = 8 бит.

Учитывая, что каждый бит принимает значение 0 или 1, количество их возможных сочетаний в байте равно 28 = 256.

Значит, с помощью 1 байта можно получить 256 разных двоичных кодовых комбинаций и отобразить с их помощью 256 различных символов.

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

Кодирование заключается в том, что каждому символу ставится в соответствие уникальный десятичный код от 0 до 255 или соответствующий ему двоичный код от00000000 до 11111111. Таким образом, человек различает символы по их начертанию, а компьютер – по их коду.

Важно, что присвоение символу конкретного кода – это вопрос соглашения, которое фиксируется в кодовой таблице.

Кодирование текстовой информации с помощью байтов опирается на несколько различных стандартов, но первоосновой для всех стал стандарт ASCII (American Standart Code for Information Interchange), разработанный в США в Национальном институте ANSI (American National Standarts Institute).

В системе ASCII закреплены две таблицы кодирования – базовая и расширенная. Базовая таблица закрепляет значения кодов от 0 до 127, а расширенная относится к символам с номерами от 128 до 255.

Первые 33 кода (с 0 до 32) соответствуют не символам, а операциям (перевод строки, ввод пробела и т. д.). 

Коды с 33 по 127 являются интернациональными и соответствуют символам латинского алфавита, цифрам, знакам арифметических операций и знакам препинания.

Коды с 128 по 255 являются национальными, т.е. в национальных кодировках одному и тому же коду соответствуют различные символы. В настоящее время существует много различных кодовых таблиц для русских букв (КОИ-8, СР1251, СР866, Mac, ISO),поэтому тексты, созданные в одной кодировке , могут не правильно отображаться в другой.

Кодирование графической информации

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

Для получения черно-белого изображения (без полутонов) пиксель может принимать только два состояния: “белый” или “черный”. Тогда для его кодирования достаточно 1 бита:

1 – белый,

0 – черный. 

Пиксель на цветном дисплее может иметь различную окраску. Поэтому 1 бита на пиксель – недостаточно.

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

00 – черный 10 – зеленый

01 – красный 11 – коричневый

Цветное изображение на экране монитора формируется за счет смешивания трех базовых цветов: красного, зеленого, синего. Из трех цветов можно получить восемь комбинаций:

К З С Цвет

0 0 0 Черный

0 0 1 Синий

0 1 0 Зеленый

0 1 1 Голубой

1 0 0 Красный

1 0 1 Розовый

1 1 0 Коричневый

1 1 1 Белый

Следовательно, для кодирования 8-цветного изображения требуется три бита памяти на один пиксель.

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

Шестнадцатицветная палитра получается при использовании 4-разрядной кодировки пикселя: к трем битам базовых цветов добавляется один бит интенсивности. Этот бит управляет яркостью всех трех цветов одновременно.

Продолжение в следующей статье

Пиши комментарии, ставьте лайки, подписывайтесь на канал

Всем мира и добра

Источник: https://zen.yandex.ru/media/id/5d4a77df027a1500ae81129a/izuchaem-informatiku-2-tema-kodirovanie-informacii-5d7f6f86fbe6e73d64159193

Кодирование символов

Таблица символов ASCII для распечатки и работы на уроке информатики
 

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

Для кодировки символов в Windows используется таблица ASCII (American Standard Code for Interchange of Information). В ASCII первые 128 символов всех кодовых страниц состоят из базовой таблицы символов.

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

СимволКодКлавишиЗначение
nul0Ctrl + @Нуль
soh1Ctrl + AНачало заголовка
stx2Ctrl + BНачало текста
etx3Ctrl + CКонец текста
eot4Ctrl + DКонец передачи
enq5Ctrl + EЗапрос
ack6Ctrl + FПодтверждение
bel7Ctrl + GСигнал (звонок)
bs8Ctrl + HЗабой (шаг назад)
ht9Ctrl + IГоризонтальная табуляция
lf10Ctrl + JПеревод строки
vt11Ctrl + KВертикальная табуляция
ff12Ctrl + LНовая страница
cr13Ctrl + MВозврат каретки
so14Ctrl + NВыключить сдвиг
si15Ctrl + OВключить сдвиг
dle16Ctrl + PКлюч связи данных
dc117Ctrl + QУправление устройством 1
dc218Ctrl + RУправление устройством 2
dc319Ctrl + SУправление устройством 3
dc420Ctrl + TУправление устройством 4
nak21Ctrl + UОтрицательное подтверждение
syn22Ctrl + VСинхронизация
etb23Ctrl + WКонец передаваемого блока
can24Ctrl + XОтказ
em25Ctrl + YКонец среды
sub26Ctrl + ZЗамена
esc27Ctrl + [Ключ
fs28Ctrl + \Разделитель файлов
gs29Ctrl + ]Разделитель группы
rs30Ctrl +Разделитель записей
us31Ctrl + _Разделитель модулей

Базовая таблица кодировки ASCII

32 пробел48 064 @80 P96 `112 p
33 !49 165 A81 Q97 a113 q
34 50 266 B82 R98 b114 r
35 #51 367 C83 S99 c115 s
36 $52 468 D84 T100 d116 t
37 %53 569 E85 U101 e117 u
38 &54 670 F86 V102 f118 v
39 ‘55 771 G87 W103 g119 w
40 (56 872 H88 X104 h120 x
41 )57 973 I89 Y105 i121 y
42 *58 :74 J90 Z106 j122 z
43 +59 ;75 K91 [107 k123 {
44 ,6078 N94110 n126 ~
47 /63 ?79 O95 _111 o127

Символы с номерами от 128 до 255 представляют собой таблицу расширения и варьируются в зависимости от набора скриптов, представленных кодировкой символов. Набор символов таблицы расширения различается в зависимости от выбранной кодовой страницы:

1251 – кодовая страница Windows

128 Ђ144 Ђ160176 °192 А208 Р224 а240 р
129 Ѓ145 ‘161 Ў177 ±193 Б209 С225 б241 с
130 ‚146 ’162 ў178 I194 В210 Т226 в242 т
131 ѓ147 “163 J179 i195 Г211 У227 г243 у
132 „148 ”164 ¤180 ґ196 Д212 Ф228 д244 ф
133 …149 •165 Ґ181 μ197 Е213 Х229 е245 х
134 †150 –166 ¦182 ¶198 Ж214 Ц230 ж246 ц
135 ‡151 —167 §183 ·199 З215 Ч231 з247 ч
136 €152 □168 Ё184 ё200 И216 Ш232 и248 ш
137 ‰153 ™169 ©185 №201 Й217 Щ233 й249 щ
138 Љ154 љ170 Є186 є202 К218 Ъ234 к250 ъ
139171 «187 »203 Л219 Ы235 л251 ы
140 Њ156 њ172 ¬188 j204 М220 Ь236 м252 ь
141 Ќ157 ќ173189 S205 Н221 Э237 н253 э
142 Ћ158 ћ174 ®190 s206 О222 Ю238 о254 ю
143 Џ159 џ175 Ï191 ї207 П223 Я239 п255 я

866 – кодовая страница DOS

128 А144 Р160 а176 ░192 └208 ╨224 р240 ≡Ё
129 Б145 С161 б177 ▒193 ┴209 ╤225 с241 ±ё
130 В146 Т162 в178 ▓194 ┬210 ╥226 т242 ≥
131 Г147 У163 г179 │195 ├211 ╙227 у243 ≤
132 Д148 Ф164 д180 ┤196 ─212 ╘228 ф244 ⌠
133 Е149 Х165 е181 ╡197 ┼213 ╒229 х245 ⌡
134 Ж150 Ц166 ж182 ╢198 ╞214 ╓230 ц246 ¸
135 З151 Ч167 з183 ╖199 ╟215 ╫231 ч247 »
136 И152 Ш168 и184 ╕200 ╚216 ╪232 ш248 °
137 Й153 Щ169 й185 ╣201 ╔217 ┘233 щ249 ·
138 К154 Ъ170 к186 ║202 ╩218 ┌234 ъ250 ∙
139 Л155 Ы171 л187 ╗203 ╦219 █235 ы251 √
140 М156 Ь172 м188 ╝204 ╠220 ▄236 ь252 ⁿ
141 Н157 Э173 н189 ╜205 ═221 ▌237 э253 ²
142 О158 Ю174 о190 ╛206 ╬222 ▐238 ю254 ■
143 П159 Я175 п191 ┐207 ╧223 ▀239 я255

Русские названия основных спецсимволов:

СимволНазвание
`гравис, кавычка, обратный машинописный апостроф
`гравис, кавычка, обратный машинописный апостроф
~тильда
!восклицательный знак
@эт, коммерческое эт, «собака»
#октоторп, решетка, диез
$знак доллара
%процент
циркумфлекс, знак вставки
&амперсанд
*астериск, звездочка, знак умножения
(левая открывающая круглая скобка
)правая закрывающая круглая скобка
минус, дефис
_знак подчеркивания
=знак равенства
+плюс
[левая открывающая квадратная скобка
]правая закрывающая квадратная скобка
{левая открывающая фигурная скобка
}правая закрывающая фигурная скобка
;точка с запятой
:двоеточие
машинописный апостроф, одинарная кавычка
двойная кавычка
,запятая
.точка
/слэш, косая черта, знак дроби
правая закрытая угловая скобка, знак больше
\обратный слэш, обратная косая черта
|вертикальная черта

Кодировка UNICODE

Юникод (Unicode) — стандарт кодирования символов, позволяющий представить знаки практически всех письменных языков. Стандарт предложен в 1991 году некоммерческой организацией «Консорциум Юникода». В Unicode используются 16-битовые (2-байтовые) коды, что позволяет представить 65536 символов.

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

Для представления символьных данных в кодировке Unicode используется символьный тип wchar_t.

ASCIIUNICODE
charwchar_t
1 байт2 байта

Тип кодировки задается в свойствах проекта Microsoft Visual Studio:

Многобайтовая кодировка предполагает использование кодировки ASCII.

При этом при построении проекта используется директива условной компиляции, переопределяющая тип TCHAR:

#ifdef _UNICODE
  typedef wchar_t TCHAR;
#else
  typedef char TCHAR;
#endif

Для перекодирования строки в формат Unicode без изменения кодировки файла используется макроопределение

_T(“строка”)

Прототип макроса содержится в файле tchar.h.

Назад: Представление данных и архитектура ЭВМ

Источник: https://prog-cpp.ru/number-coding/

Урок 12Представление нечисловой информации в компьютере

Таблица символов ASCII для распечатки и работы на уроке информатики

Изучив эту тему, вы узнаете и повторите: – как в компьютере представляется текстовая информация; – что такое ASCII и Unicode; – как в компьютере представляется графическая информация; – какие форматы используются при хранении графических файлов; – как в компьютере представляется звуковая информация; – какие форматы используются при хранении звуковых файлов.

Компьютеры не с самого рождения могли обрабатывать символьную информацию. Лишь с конца 60-х годов они стали использоваться для обработки текстов и в настоящее время большинство пользователей ПК занимаются вводом, редактированием и форматированием текстовой информации.

1. Таблица кодирования ASCII

А теперь «заглянем» в память компьютера и разберемся, как же представлена в нем текстовая информация.

Текстовая информация состоит из символов: букв, цифр, знаков препинания, скобок и других. Мы уже говорили, что множество всех символов, с помощью которых записывается текст, называется алфавитом, а число символов в алфавите — его мощностью.

Для представления текстовой информации в компьютере используется алфавит мощностью 256 символов. Мы знаем, что один символ такого алфавита несет 8 битов информации: 2 в 8 степени равно 256. 8 битов = 1 байт, следовательно:

Один символ в компьютерном тексте занимает 1 байт памяти.

Как мы выяснили, традиционно для кодирования одного символа используется 8 бит. И, когда люди определились с количеством бит, им осталось договориться о том, каким кодом кодировать тот или иной символ, чтобы не получилось путаницы, т.е. необходимо было выработать стандарт – все коды символов сохранить в специальной таблице кодов.

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

Этот институт ввел в действие таблицу кодов ASCII (AmericanStandardCodeforInformationInterchange – стандартный код информационного обмена США).

Рассмотрим таблицу кодов ASCII.

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

Таблица ASCII разделена на две части. Первая – стандартная – содержит коды от 0 до 127. Вторая – расширенная – содержит символы с кодами от 128 до 255.

Первые 32 кода отданы производителям аппаратных средств и называются они управляющие, т.к. эти коды управляют выводом данных. Им не соответствуют никакие символы.

Коды с 32 по 127 соответствуют символам английского алфавита, знакам препинания, цифрам, арифметическим действиям и некоторым вспомогательным символам.

Коды расширенной части таблицы ASCII отданы под символы национальных алфавитов, символы псевдографики и научные символы.

Стандартная часть таблицы кодов ASCII

Если вы внимательно посмотрите на обе части таблицы, то увидите, что все буквы расположены в них по алфавиту, а цифры – по возрастанию. Этот принцип последовательного кодирования позволяет определить код символа, не заглядывая в таблицу.

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

Коды национального (русского) алфавита расширенной частитаблицы ASCII

Альтернативные системы кодирования кириллицы

Тексты, созданные в одной кодировке, не будут правильно отображаться в другой.

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

Для разных типов ЭВМ используются различные кодировки:

В настоящее время существует 5 кодовых таблиц для русских букв: Windows (СР(кодовая страница)1251), MS – DOS (СР(кодовая страница)866), KOИ – 8 (Код обмена информацией, 8-битный) (используется в OS UNIX), Mac (Macintosh), ISO (OS UNIX).

Одним из первых стандартов кодирования кириллицы на компьютерах был стан-дарт КОИ-8.

Национальная часть кодовой таблицы стандарта КОИ8-Р

В настоящее время применяется и кодовая таблица, размещенная на странице СР866 стандарта кодирования текстовой информации, которая используется в операционной системе MS DOS или сеансе работы MS DOS для кодирования кириллицы.

Национальная часть кодовой таблицы СР866

В настоящее время для кодирования кириллицы наибольшее распространение получила кодовая таблица, размещенная на странице СР1251 соответствующего стандарта, которая используется в операционных системах семейства Windows фирмы Microsoft.

Национальная часть кодовой таблицы СР1251

Во всех представленных кодовых таблицах, кроме таблицы стандарта Unicode, для кодирования одного символа отводится 8 двоичных разрядов (8 бит).

В мире существует примерно 6800 различных языков. Если прочитать текст, напечатанный в Японии на компьютере в России или США, то понять его будет нельзя.

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

N = 2i 2i = 216 = 65536 N = 65536 N – мощность алфавита символов в кодовой таблице Unicode. i – информационный вес символа

Основополагающая таблица использования кодового пространства Unicode

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

Рассмотрим примеры.

1) Представьте в форме шестнадцатеричного кода слово «ЭВМ» во всех пяти кодировках. Воспользуемся компьютерным калькулятором для перевода чисел из десятичной в шестнадцатеричную систему счисления.

https://www.youtube.com/watch?v=DSDjUGcS-_g

Последовательности десятичных кодов слова «ЭВМ» в различных кодировках составляем на основе кодировочных таблиц: КОИ8-Р: 252 247 237 СР1251: 221 194 204 СР866: 157 130 140 Мас: 157 130 140 ISO: 205 178 188

Переводим с помощью калькулятора последовательности кодов из десятичной системы в шестнадцатеричную: КОИ8-Р: FCF7 ED СР1251: DDC2 CC СР866: 9D 82 8C Мас: 9D 82 8C ISO: CDB2 BC

2) Определить числовой код символа в кодировке Unicode с помощью тексто-вого редактора MicrosoftWord.

1. В операционной системе Windows запустить текстовый редактор MicrosoftWord.

2. В текстовом редакторе MicrosoftWord ввести команду [Вставка-Символ…]. На экране появится диалоговое окно Символ. Центральную часть диалогового окна занимает фрагмент таблицы символов.

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

4. Для определения шестнадцатеричного числового кода символа в кодировке Unicode с помощью раскрывающегося списка из: выбрать тип кодировки Юникод (шестн.).

5. В таблице символов выбрать символ Э. В текстовом поле кодзнака : появится его шестнадцатеричный числовой код (в данном случае 042D).

Решите задачи:

№1. Закодируйте с помощью таблицы ASCII слова: А) Excel; Б) Access; В) Windows; Г) ИНФОРМАЦИЯ.

№2. Буква «i» в таблице кодов имеет код 105. Не пользуясь таблицей, расшифруйте следующую последовательность кодов: 102, 105, 108, 101.

№3. Десятичный код буквы «е» в таблице ASCII равен 101. Не пользуясь таблицей, составьте последовательность кодов, соответствующих слову help.

№4. Десятичный код буквы «i» в таблице ASCII равен 105. Не пользуясь таблицей, составьте последовательность кодов, соответствующих слову link.

№5. Декодируйте следующие тексты, заданные десятичным кодом: А) 192 235 227 238 240 232 242 236; Б) 193 235 238 234 45 241 245 229 236 224; В) 115 111 102 116 119 97 114 101.

№6. Во сколько раз увеличится информационный объем страницы текста при его преобразовании из кодировки Windows 1251 (таблица кодировки содержит 256 символов) в кодировку Unicode (таблица кодировки содержит 65536 символов)?

№7. Каков информационный объем текста, содержащего слово ПРОГРАММИРОВАНИЕ: А) в 16-битной кодировке; Б) в 8-битной кодировке.

№8. Текст занимает ¼ Кбайта. Какое количество символов он содержит?

№9. Текст занимает полных 6 страниц. На каждой странице размещается 30 строк по 80 символов. Определить объем оперативной памяти, который займет этот текст.

№10. Свободный объем оперативной памяти компьютера 320 Кбайт. Сколько страниц книги поместится в ней, если на странице: А) 32 строки по 32 символа; Б) 64 строки по 64 символа; В) 16 строк по 32 символа.

№11. Текст занимает 20 секторов на двусторонней дискете объемом 360 Кбайт. Дискета разбита на 40 дорожек по 9 секторов. Сколько символов содержит текст?

Источник: https://xn----7sbbfb7a7aej.xn--p1ai/informatika_10/informatika_materialy_zanytii_10_12.html

Ваш педагог
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: