- Таблица ASCII и как её использовать – Заметки Сис.Админа
- Таблица ASCII как использовать расширенные символы
- Подводные камни при таком подходе
- Послесловие
- Строки: таблица символов ASCII и её использование
- Что такое ASCII ?
- Основы построения библиотеки
- Выводим все символы ASCII
- StringCompare
- StringIsDigit
- StringIsAlpha
- Создание библиотеки
- Использование библиотеки stringProcess
- Заключение
- Изучаем Информатику. 2 тема. Кодирование информации
- Кодирование текстовой информации
- Кодирование графической информации
- Кодирование символов
- Базовая таблица кодировки ASCII
- 1251 – кодовая страница Windows
- 866 – кодовая страница DOS
- Кодировка UNICODE
- Урок 12Представление нечисловой информации в компьютере
- 1. Таблица кодирования 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, и в конце создадим новую библиотеку, в которую включим эти функции.
Они достаточно популярны в других языках программирования, но их нет среди встроенных функций языка 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 тема. Кодирование информации
Одно из основных достоинств компьютера связано с тем, что это удивительно универсальная машина.
Каждый, кто хоть когда-нибудь с ним сталкивался, знает, что занятие арифметическими подсчетами составляет совсем не главный метод использования компьютера.
Компьютеры прекрасно воспроизводят музыку и видеофильмы, с их помощью можно организовывать речевые и видеоконференции в Интернете, создавать и обрабатывать графические изображения и и.д
Человек выражает свои мысли в виде предложений, составленных из слов. Они являются алфавитным представлением информации. Основу любого языка составляет алфавит – конечный набор различных знаков (символов) любой природы, из которых складывается сообщение.
Одна и та же запись может нести разную смысловую нагрузку. Например, набор цифр 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
Кодирование символов
Кодировка символов (часто называемая также кодовой страницей) – это набор числовых значений, которые ставятся в соответствие группе алфавитно-цифровых символов, знаков пунктуации и специальных символов.
Для кодировки символов в Windows используется таблица ASCII (American Standard Code for Interchange of Information). В ASCII первые 128 символов всех кодовых страниц состоят из базовой таблицы символов.
Первые 32 кода базовой таблицы, начиная с нулевого, размещают управляющие коды.
Символ | Код | Клавиши | Значение |
nul | 0 | Ctrl + @ | Нуль |
soh | 1 | Ctrl + A | Начало заголовка |
stx | 2 | Ctrl + B | Начало текста |
etx | 3 | Ctrl + C | Конец текста |
eot | 4 | Ctrl + D | Конец передачи |
enq | 5 | Ctrl + E | Запрос |
ack | 6 | Ctrl + F | Подтверждение |
bel | 7 | Ctrl + G | Сигнал (звонок) |
bs | 8 | Ctrl + H | Забой (шаг назад) |
ht | 9 | Ctrl + I | Горизонтальная табуляция |
lf | 10 | Ctrl + J | Перевод строки |
vt | 11 | Ctrl + K | Вертикальная табуляция |
ff | 12 | Ctrl + L | Новая страница |
cr | 13 | Ctrl + M | Возврат каретки |
so | 14 | Ctrl + N | Выключить сдвиг |
si | 15 | Ctrl + O | Включить сдвиг |
dle | 16 | Ctrl + P | Ключ связи данных |
dc1 | 17 | Ctrl + Q | Управление устройством 1 |
dc2 | 18 | Ctrl + R | Управление устройством 2 |
dc3 | 19 | Ctrl + S | Управление устройством 3 |
dc4 | 20 | Ctrl + T | Управление устройством 4 |
nak | 21 | Ctrl + U | Отрицательное подтверждение |
syn | 22 | Ctrl + V | Синхронизация |
etb | 23 | Ctrl + W | Конец передаваемого блока |
can | 24 | Ctrl + X | Отказ |
em | 25 | Ctrl + Y | Конец среды |
sub | 26 | Ctrl + Z | Замена |
esc | 27 | Ctrl + [ | Ключ |
fs | 28 | Ctrl + \ | Разделитель файлов |
gs | 29 | Ctrl + ] | Разделитель группы |
rs | 30 | Ctrl + | Разделитель записей |
us | 31 | Ctrl + _ | Разделитель модулей |
Базовая таблица кодировки ASCII
32 пробел | 48 0 | 64 @ | 80 P | 96 ` | 112 p |
33 ! | 49 1 | 65 A | 81 Q | 97 a | 113 q |
34 “ | 50 2 | 66 B | 82 R | 98 b | 114 r |
35 # | 51 3 | 67 C | 83 S | 99 c | 115 s |
36 $ | 52 4 | 68 D | 84 T | 100 d | 116 t |
37 % | 53 5 | 69 E | 85 U | 101 e | 117 u |
38 & | 54 6 | 70 F | 86 V | 102 f | 118 v |
39 ‘ | 55 7 | 71 G | 87 W | 103 g | 119 w |
40 ( | 56 8 | 72 H | 88 X | 104 h | 120 x |
41 ) | 57 9 | 73 I | 89 Y | 105 i | 121 y |
42 * | 58 : | 74 J | 90 Z | 106 j | 122 z |
43 + | 59 ; | 75 K | 91 [ | 107 k | 123 { |
44 , | 60 | 78 N | 94 | 110 n | 126 ~ |
47 / | 63 ? | 79 O | 95 _ | 111 o | 127 |
Символы с номерами от 128 до 255 представляют собой таблицу расширения и варьируются в зависимости от набора скриптов, представленных кодировкой символов. Набор символов таблицы расширения различается в зависимости от выбранной кодовой страницы:
1251 – кодовая страница Windows
128 Ђ | 144 Ђ | 160 | 176 ° | 192 А | 208 Р | 224 а | 240 р |
129 Ѓ | 145 ‘ | 161 Ў | 177 ± | 193 Б | 209 С | 225 б | 241 с |
130 ‚ | 146 ’ | 162 ў | 178 I | 194 В | 210 Т | 226 в | 242 т |
131 ѓ | 147 “ | 163 J | 179 i | 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 | 171 « | 187 » | 203 Л | 219 Ы | 235 л | 251 ы | |
140 Њ | 156 њ | 172 ¬ | 188 j | 204 М | 220 Ь | 236 м | 252 ь |
141 Ќ | 157 ќ | 173 | 189 S | 205 Н | 221 Э | 237 н | 253 э |
142 Ћ | 158 ћ | 174 ® | 190 s | 206 О | 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.
ASCII | UNICODE |
char | wchar_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 и 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