Задания а6, а7 (1)… (2)вся другая информация (звуки, изображения) для обработки на компьютере должна быть преобразована в числовую форму. (3)аналогичным. Кодирование - термин -энциклопедический фонд Кодирование и шифрование

Решение заданий A6, A7, A8, A9, A10, A11 по русскому языку

Прочитайте текст и выполните задания A6 - A11.

(1)... (2)Вся другая информация (звуки, изображения) для обработки на компьютере должна быть преобразована в числовую форму. (3)Аналогичным образом на компьютере обрабатывается и текстовая информация: при вводе в компьютер каждая буква кодируется определённым числом, а при переводе на внешние устройства по этим числам строятся соответствующие изображения букв. (4)Это соответствие между набором букв и числами называется кодировкой символов. (5)Все числа в компьютере представляются с помощью нулей и единиц, а не десяти цифр, как это привычно для людей. (6)... компьютеры обычно работают в двоичной системе счисления.

A6

Какое из приведённых ниже предложений должно быть первым в этом тексте?

1) Персональные компьютеры – это универсальные устройства для обработки информации.
2) Компьютер может обрабатывать только информацию, представленную в числовой форме.
3) Вся информация, предназначенная для долговременного пользования, хранится в файлах.
4) Информация в компьютере хранится в памяти или на различных носителях, например на гибких и жёстких дисках.

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

Решение задания A7 по русскому языку

A7

Какое из приведённых ниже слов (сочетаний слов) должно быть на месте пропуска в шестом предложении?

1) Прежде всего, 2) Однако 3) Кроме того, 4) Иными словами,

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

Решение задания A8 по русскому языку

A8

Какие слова являются грамматической основой во втором (2) предложении текста?

1) информация для обработки
2) информация должна
3) информация должна быть преобразована
4) информация преобразована

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

Решение задания A9 по русскому языку

A9

Укажите верную характеристику третьего (3) предложения текста.

1) сложное с бессоюзной и союзной сочинительной связью
2) сложносочинённое
3) сложное бессоюзное
4) сложное с бессоюзной и союзной подчинительной связью

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

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

1.[обрабатывается информация]: 2.[буква кодируется], а 3.[изображения букв строятся].

Мы выделили в предложении несколько (3) грамматических основ, следовательно, предложение сложное. Как видно из схемы, часть №1 и часть №2 соединены бессоюзной связью (на письме – двоеточие), а часть №2 и часть №3 с помощью сочинительного союза а . Таким образом, данное предложение характеризуется как сложное с бессоюзной и союзной сочинительной связью.
Верный ответ - №1

Решение задания A10 по русскому языку

A10

Укажите правильную морфологическую характеристику слова ПРЕОБРАЗОВАНА из второго (2) предложения текста.

1) действительное причастие
2) страдательное причастие
3) краткое прилагательное
4) деепричастие совершенного вида

Слово преобразована образовано от глагола преобразовать и отвечает на вопрос какова ? Таким образом, это отглагольное образование с общим атрибутивным (признак) значением. В русском языке значение признака по действию имеет только причастие. Действительный или страдательный залог причастий легко определяется по формальным показателям (по суффиксам): действительные причастия имеют в своем составе суффиксы –ущ-/-ющ-, -ащ-/-ящ-, -вш-, -в-, страдательные: -ем-, -им-, - н-/-нн-.
Таким образом, преобразована – страдательное причастие, Верный ответ - №2.

Решение задания A11 по русскому языку

A11

Укажите значение слова КОДИРУЕТСЯ в предложении 3.

1) воспроизводится в определённой последовательности
2) постоянно повторяется
3) записывается в виде текста
4) переводится из одной системы знаков в другую

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


Смотри также

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

Кодировки символов . Для обработки на компьютере текстовой информации обычно при вводе в компьютер каждая буква кодируется определенным числом, а при выводе на внешние устройства (экран или печать) для восприятия человеком по этим числам строятся соответствующие изображения букв. Соответствие между набором букв и числами называется кодировкой символов. Наиболее часто используемые на IВМ РС кодировки символов описаны в главах 10 и 32.

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

Биты и байты . Единицей информации в компьютере является одни бит, т.е. двоичный разряд, который может принимать значение 0 или 1. Как правило, команды компьютеров работают не с отдельными битами, а с восемью битами сразу. Восемь последовательных битов составляют байт. В одном байте можно закодировать значение одного символа из 256 возможных (256 = 2). Более крупными единицами информации являются килобайт (сокращенно обозначаемый Кбайт), равный 1024 байтам (1024=2), мегабайт (сокращенно обозначаемый Мбайт), равный 1024 Кбайтам и гигабайт (Гбайт), равный 1024 Мбайтам. Для ориентировки скажем, что если на странице текста помещается в среднем 2500 знаков, то 1 Мбайт- это примерно 400 страниц, а 1 Гбайт - 400 тыс. страниц.

Как работает компьютер

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

Устройства компьютера . Прежде всего, компьютер, согласно принципам фон Неймана, должен иметь следующие устройства:

· арифмепгическо-логическое устройство, выполняющее арифметические и логические операции;

· устройство управления , которое организует процесс выполнения программ;

· запоминающее устройство , или память для хранения про

· грамм и данных;

· внешние устройства для ввода-вывода информации.

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

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

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

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

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

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

Сожержание

I. История кодирования информации………………………………..3

II. Кодирование информации…………………………………………4

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

IV. Виды таблиц кодировок…………………………………………...6

V. Расчет количества текстовой информации………………………14

Список используемой литературы…………………………………..16

I . История кодирования информации

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

    криптография – это тайнопись, система изменения письма с целью сделать текст непонятным для непосвященных лиц;

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

Один из самых первых известных методов шифрования носит имя римского императора Юлия Цезаря (I век до н.э.) . Этот метод основан на замене каждой буквы шифруемого текста, на другую, путем смещения в алфавите от исходной буквы на фиксированное количество символов, причем алфавит читается по кругу, то есть после буквы я рассматривается а. Так слово «байт» при смещении на два символа вправо кодируется словом «гвлф». Обратный процесс расшифровки данного слова – необходимо заменять каждую зашифрованную букву, на вторую слева от неё.

II. Кодирование информации

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

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

Обычно каждый образ при кодировании (иногда говорят – шифровке) представлении отдельным знаком.

Знак - это элемент конечного множества отличных друг от друга элементов.

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

На компьютере можно обрабатывать текстовую информацию. При вводе в компьютер каждая буква кодируется определенным числом, а при выводе на внешние устройства (экран или печать) для восприятия человеком по этим числам строятся изображения букв. Соответствие между набором букв и числами называется кодировкой символов.

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

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

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

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

Начиная с конца 60-х годов, компьютеры все больше стали использоваться для обработки текстовой информации, и в настоящее время основная доля персональных компьютеров в мире (и большая часть времени) занята обработкой именно текстовой информации. Все эти виды информации в компьютере представлены в двоичном коде, т. е. используется алфавит мощностью два (всего два символа 0 и 1). Связано это с тем, что удобно представлять информацию в виде последовательности электрических импульсов: импульс отсутствует (0), импульс есть (1).

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

С точки зрения ЭВМ текст состоит из отдельных символов. К числу символов принадлежат не только буквы (заглавные или строчные, латинские или русские), но и цифры, знаки препинания, спецсимволы типа "=", "(", "&" и т.п. и даже (обратите особое внимание!) пробелы между словами.

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

Традиционно для кодирования одного символа используется количество информации, равное 1 байту, т. е. I = 1 байт = 8 бит. При помощи формулы, которая связывает между собой количество возможных событий К и количество информации I, можно вычислить сколько различных символов можно закодировать (считая, что символы - это возможные события): К = 2 I = 2 8 = 256, т. е. для представления текстовой информации можно использовать алфавит мощностью 256 символов.

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

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

Удобство побайтового кодирования символов очевидно, поскольку байт - наименьшая адресуемая часть памяти и, следовательно, процессор может обратиться к каждому символу отдельно, выполняя обработку текста. С другой стороны, 256 символов – это вполне достаточное количество для представления самой разнообразной символьной информации.

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

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

Все символы компьютерного алфавита пронумерованы от 0 до 255. Каждому номеру соответствует восьмиразрядный двоичный код от 00000000 до 11111111. Этот код просто порядковый номер символа в двоичной системе счисления.

IV . Виды таблиц кодировок

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

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

В качестве международного стандарта принята кодовая таблица ASCII (American Standard Code for Information Interchange - Американский стандартный код для информационного обмена), кодирующая первую половину символов с числовыми кодами от 0 до 127 (коды от 0 до 32 отведены не символам, а функциональным клавишам).

Таблица кодов ASCII делится на две части.

Международным стандартом является лишь первая половина таблицы, т.е. символы с номерами от 0 (00000000), до 127 (01111111).

Структура таблицы кодировки ASCII

Порядковый номер

Символ

00000000 - 00011111

Символы с номерами от 0 до 31 принято называть управляющими.

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

0100000 - 01111111

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

Символ 32 - пробел, т.е. пустая позиция в тексте.

Все остальные отражаются определенными знаками.

10000000 - 11111111

Альтернативная часть таблицы (русская).

Вторая половина кодовой таблицы ASCII, называемая кодовой страницей (128 кодов, начиная с 10000000 и кончая 11111111), может иметь различные варианты, каждый вариант имеет свой номер.

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

Первая половина таблицы кодов ASCII

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

Для букв русского алфавита также соблюдается принцип последовательного кодирования.

Вторая половина таблицы кодов ASCII

К сожалению, в настоящее время существуют пять различных кодировок кириллицы (КОИ8-Р, Windows. MS-DOS, Macintosh и ISO). Из-за этого часто возникают проблемы с переносом русского текста с одного компьютера на другой, из одной программной системы в другую.

Хронологически одним из первых стандартов кодирования русских букв на компьютерах был КОИ8 ("Код обмена информацией, 8-битный"). Эта кодировка применялась еще в 70-ые годы на компьютерах серии ЕС ЭВМ, а с середины 80-х стала использоваться в первых русифицированных версиях операционной системы UNIX.

От начала 90-х годов, времени господства операционной системы MS DOS, остается кодировка CP866 ("CP" означает "Code Page", "кодовая страница").

Компьютеры фирмы Apple, работающие под управлением операционной системы Mac OS, используют свою собственную кодировку Mac.

Кроме того, Международная организация по стандартизации (International Standards Organization, ISO) утвердила в качестве стандарта для русского языка еще одну кодировку под названием ISO 8859-5.

Наиболее распространенной в настоящее время является кодировка Microsoft Windows, обозначаемая сокращением CP1251. Введена компанией Microsoft; с учетом широкого распространения операционных систем (ОС) и других программных продуктов этой компании в Российской Федерации она нашла широкое распространение.

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

Это 16-разрядная кодировка, т.е. в ней на каждый символ отводится 2 байта памяти. Конечно, при этом объем занимаемой памяти увеличивается в 2 раза. Но зато такая кодовая таблица допускает включение до 65536 символов. Полная спецификация стандарта Unicode включает в себя все существующие, вымершие и искусственно созданные алфавиты мира, а также множество математических, музыкальных, химических и прочих символов.

Внутреннее представление слов в памяти компьютера

с помощью таблицы ASCII

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


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

Например, последовательность числовых кодов 221, 194, 204 в кодировке СР1251 образует слово «ЭВМ», тогда как в других кодировках это будет бессмысленный набор символов.

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

V . Расчет количества текстовой информации

Задача 1: Закодируйте слово “Рим” с помощью таблиц кодировок КОИ8-Р и CP1251.

Решение:

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

“Мой дядя самых честных правил,

Когда не в шутку занемог,

Он уважать себя заставил

И лучше выдумать не мог.”

Решение: В данной фразе 108 символов, учитывая знаки препинания, кавычки и пробелы. Умножаем это количество на 8 бит. Получаем 108*8=864 бита.

Задача 3: Два текста содержат одинаковое количество символов. Первый текст записан на русском языке, а второй на языке племени нагури, алфавит которого состоит из 16 символов. Чей текст несет большее количество информации?

Решение:

1) I = К * а (информационный объем текста равен произведению числа символов на информационный вес одного символа).

2) Т.к. оба текста имеют одинаковое число символов (К), то разница зависит от информативности одного символа алфавита (а).

3) 2 а1 = 32, т.е. а 1 = 5 бит, 2 а2 = 16, т.е. а 2 = 4 бит.

4) I 1 = К * 5 бит, I 2 = К * 4 бит.

5) Значит, текст, записанный на русском языке в 5/4 раза несет больше информации.

Задача 4: Объем сообщения, содержащего 2048 символов, составил 1/512 часть Мбайта. Определить мощность алфавита.

Решение:

1) I = 1/512 * 1024 * 1024 * 8 = 16384 бит – перевели в биты информационный объем сообщения.

2) а = I / К = 16384 /1024 =16 бит – приходится на один символ алфавита.

3) 2*16*2048 = 65536 символов – мощность использованного алфавита.

Задача 5: Лазерный принтер Canon LBP печатает со скоростью в среднем 6,3 Кбит в секунду. Сколько времени понадобится для распечатки 8-ми страничного документа, если известно, что на одной странице в среднем по 45 строк, в строке 70 символов (1 символ – 1 байт)?

Решение:

1) Находим количество информации, содержащейся на 1 странице: 45 * 70 * 8 бит = 25200 бит

2) Находим количество информации на 8 страницах: 25200 * 8 = 201600 бит

3) Приводим к единым единицам измерения. Для этого Мбиты переводим в биты: 6,3*1024=6451,2 бит/сек.

4) Находим время печати: 201600: 6451,2 =31 секунда.

Список используемой литературы

    Агеев В.М. Теория информации и кодирования: дискретизация и кодирование измерительной информации. - М.: МАИ, 1977.

    Кузьмин И.В., Кедрус В.А. Основы теории информации и кодирования. - Киев, Вища школа, 1986.

    Простейшие методы шифрования текста/ Д.М. Златопольский. – М.: Чистые пруды, 2007 – 32 с.

    Угринович Н.Д. Информатика и информационные технологии. Учебник для 10-11 классов / Н.Д.Угринович. – М.: БИНОМ. Лаборатория знаний, 2003. – 512 с.

    http://school497.spb.edu.ru/uchint002/les10/les.html#n

Кодирование информации -- это процесс формирования определенного представления информации.

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

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

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

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

Системы счисления

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

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

Например, VI = 5 + 1 = 6, а IX = 10 -- 1 = 9.

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

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

Основание системы счисления, в которой записано число, обычно обозначается нижним индексом. Например, 5557 -- число, записанное в семеричной системе счисления. Если число записано в десятичной системе, то основание, как правило, не указывается. Основание системы -- это тоже число, и его мы будем указывать в обычной десятичной системе. Вообще, число x может быть представлено в системе с основанием p, как x=an*pn+an-1*pn-1+ a1*p1+a0*p0, где an...a0 -- цифры в представлении данного числа. Так, например,

103510=1*103+0*102+3*101+5*100;
10102 = 1*23+0*22+1*21+0*20 = 10.

Наибольший интерес при работе на ЭВМ представляют системы счисления с основаниями 2, 8 и 16. Вообще говоря, этих систем счисления обычно хватает для полноценной работы как человека, так и вычислительной машины. Однако иногда в силу различных обстоятельств все-таки приходится обращаться к другим системам счисления, например к троичной, семеричной или системе счисления по основанию 32.

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

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

Часто в информатике используют шестнадцатеричную систему, так как запись чисел в ней значительно короче записи чисел в двоичной системе. Может возникнуть вопрос: почему бы не использовать для записи очень больших чисел систему счисления, например по основанию 50? Для такой системы счисления необходимы 10 обычных цифр плюс 40 знаков, которые соответствовали бы числам от 10 до 49 и вряд ли кому-нибудь понравится работать с этими сорока знаками. Поэтому в реальной жизни системы счисления по основанию, большему 16, практически не используются.

Двоичная система счисления

Люди предпочитают десятичную систему, вероятно, потому, что с древних времен считали по пальцам. Но, не всегда и не везде люди пользовались десятичной системой счисления. В Китае, например, долгое время применялась пятеричная система счисления. В ЭВМ используют двоичную систему потому, что она имеет ряд преимуществ перед другими:

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

В двоичной системе счисления всего две цифры, называемые двоичными (binary digits). Сокращение этого наименования привело к появлению термина бит , ставшего названием разряда двоичного числа. Веса разрядов в двоичной системе изменяются по степеням двойки. Поскольку вес каждого разряда умножается либо на 0, либо на 1, то в результате значение числа определяется как сумма соответствующих значений степеней двойки. Если какой-либо разряд двоичного числа равен 1, то он называется значащим разрядом. Запись числа в двоичном виде намного длиннее записи в десятичной системе счисления.

Арифметические действия, выполняемые в двоичной системе, подчиняются тем же правилам, что и в десятичной системе. Только в двоичной системе перенос единиц в старший разряд возникает чаще, чем в десятичной. Вот как выглядит таблица сложения в двоичной системе:

Рассмотрим подробнее, как происходит процесс умножения двоичных чисел. Пусть надо умножить число 1101 на 101 (оба числа в двоичной системе счисления). Машина делает это следующим образом: она берет число 1101 и, если первый элемент второго множителя равен 1, то она заносит его в сумму. Затем сдвигает число 1101 влево на одну позицию, получая тем самым 11010, и если, второй элемент второго множителя равен единице, то тоже заносит его в сумму. Если элемент второго множителя равен нулю, то сумма не изменяется.

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

Следует отметить, что большинство калькуляторов, реализованных на ЭВМ (в том числе и KCalc) позволяют осуществлять работу в системах счисления с основаниями 2, 8, 16 и, конечно, 10.

Перевод чисел из одной системы счисления в другую

Наиболее часто встречающиеся системы счисления -- это двоичная, шестнадцатеричная и десятичная. Как же связаны между собой представления числа в различных системах счисления? Рассмотрим различные способы перевода чисел из одной системы счисления в другую на конкретных примерах.

Пусть требуется перевести число 567 из десятичной в двоичную систему. Сначала определим максимальную степень двойки, такую, чтобы два в этой степени было меньше или равно исходному числу. В нашем случае это 9, т. к. 29=512, а 210=1024, что больше начального числа. Таким образом, мы получим число разрядов результата. Оно равно 9+1=10. Поэтому результат будет иметь вид 1ххххххххх, где вместо х могут стоять любые двоичные цифры. Найдем вторую цифру результата. Возведем двойку в степень 9 и вычтем из исходного числа: 567-29=55. Остаток сравним с числом 28=256. Так как 55 меньше 256, то девятый разряд будет нулем, т. е. результат примет вид 10хххххххх. Рассмотрим восьмой разряд. Так как 27=128>55, то и он будет нулевым.

Седьмой разряд также оказывается нулевым. Искомая двоичная запись числа принимает вид 1000хххххх. 25=32<55, поэтому шестой разряд равен 1 (результат 10001ххххх). Для остатка 55-32=23 справедливо неравенство 24=16<23, что означает равенство единице пятого разряда. Действуя аналогично, получаем в результате число. Мы разложили данное число по степеням двойки:

567=1*29+0*28+0*27+0*26+1*25+1*24+0*23+1*22 +1*21+1*20

При другом способом перевода чисел используется операция деления в столбик. Рассмотрим то же самое число 567. Разделив его на 2, получим частное 283 и остаток 1. Проведем ту же самую операцию с числом 283. Получим частное 141, остаток 1. Опять делим полученное частное на 2, и так до тех пор, пока частное не станет меньше делителя. Теперь для того, чтобы получить число в двоичной системе счисления, достаточно записать последнее частное, то есть 1, и приписать к нему в обратном порядке все полученные в процессе деления остатки.



Результат, естественно, не изменился: 567 в двоичной системе счисления записывается как.

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

Сначала осуществим разложение данного числа по степеням основания. Искомое число будет состоять из трех цифр, т. к. 162=256 < 567 < 163=4096. Определим цифру старшего разряда. 2*162=512<567<3*162=768, следовательно искомое число имеет вид 2хх, где вместо х могут стоять любые шестнадцатеричные цифры. Остается распределить по следующим разрядам число*16=48<55<4*16=64, значит во втором разряде находится цифра 3. Последняя цифра равна 7 (55-48). Искомое шестнадцатеричное число равно 237.

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

Операция перевода в десятичную систему выглядит гораздо проще, так как любое десятичное число можно представить в виде x = a0*pn + a1*pn-1 + ... + an-1*p1 + an*p0, где a0 ... an -- это цифры данного числа в системе счисления с основанием p.

Кодирование информации - это процесс формирования определенного представления информации.

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

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

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

КодМорзе

Код Брайля

Код морской сигнальный

Рис. 1.2. Примеры различных систем кодирования

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

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

Познакомимся с некоторыми способами кодирования этих типов информации в ЭВМ.

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

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

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

Чтобы получить внутреннее представление целого положительного числа N, хранящегося в k-разрядном машинном слове, необходимо:

1) перевести число N в двоичную систему счисления;

2) полученный результат дополнить слева незначащими нулями до k разрядов.

Пример
Получить внутреннее представление целого числа 1607 в 2-х байтовой ячейке.
Переведем число в двоичную систему: 160710 = . Внутреннее представление этого числа в ячейке будет следующим: 011.

Для записи внутреннего представления целого отрицательного числа (-N) необходимо:

1) получить внутреннее представление положительного числа N;

2) обратный код этого числа заменой 0 на 1 и 1 на 0;

3) полученному числу прибавить 1.

Пример
Получим внутреннее представление целого отрицательного числа -1607. Воспользуемся результатом предыдущего примера и запишем внутреннее представление положительного числа 1607: 011. Инвертированием получим обратный код: 100. Добавим единицу: 101 -- это и есть внутреннее двоичное представление числа -1607.

Формат с плавающей точкой использует представление вещественного числа R в виде произведения мантиссы m на основание системы счисления n в некоторой целой степени p , которую называют порядком : R = m * n p .

Представление числа в форме с плавающей точкой неоднозначно. Например, справедливы следующие равенства:
12.345 = 0.0012345 x 104 = 1234.5 x 10-2 = 0.12345 x 102

Чаще всего в ЭВМ используют нормализованное представление числа в форме с плавающей точкой. Мантисса в таком представлении должна удовлетворять условию: 0.1p <= m < 1p. Иначе говоря, мантисса меньше 1 и первая значащая цифра -- не ноль (p -- основание системы счисления).

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

Единицы представления данных

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

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

десятичное число

Двоичное число

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

Выше мы видели, что во многих случаях целесообразно использовать не восьми­разрядное кодирование, а 16-разрядное, 24-разрядное, 32-разрядное и более. Группа из 16 взаимосвязанных бит (двух взаимосвязанных байтов) в информатике называ­ется словом. Соответственно, группы из четырех взаимосвязанных байтов (32 разряда) называются удвоенным словом, а группы из восьми байтов (64 разряда) - учетверенным ] словом. Пока, на сегодняшний день, такой системы обозначения достаточно.

Кодирование текста

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

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

Все символы такого алфавита пронумерованы от 0 до 255, а каждому номеру соответствует 8-разрядный двоичный код от до. Этот код является порядковым номером символа в двоичной системе счисления.

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

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

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

Исторически сложилось так, что для представления печатных символов (кодирования текста) в первых ЭВМ отвели 7 бит. 27=128. Этого количества вполне хватало для кодирования всех строчных и прописных букв латинского алфавита, десяти цифр и различных знаков и скобок. Именно такой, 7-битной, является таблица символов ASCII. Когда возникла необходимость кодировать национальные алфавиты, то 128 символов стало недостаточно. Было решено перейти на кодирование с помощью 8 бит (т. е. одного байта). В результате количество символов, которые можно закодировать таким образом стало равно 28=256. При этом символы национальных алфавитов располагались во второй половине кодовой таблицы, т. е. содержали единицу в старшем разряде байта, отведенного для кодирования символа. Так появился стандарт ISO 8859, содержащий множество кодировок для наиболее распространенных языков.

Кодирование русского текста

Среди них была и одна из первых таблиц для кодировки русских букв -- ISO 8859-5 .


Задачи передачи текстовой информации по сети вынудили разработать еще одну кодировку для русских букв, названную Koi8-R (код отображения информации 8-битный, русифицированный). Рассмотрим ситуацию, когда письмо, содержащее русский текст, отправлено по электронной почте. Случалось, что в процессе путешествия по сетям письмо обрабатывалось программой, которая работала с 7-битной кодировкой и обнуляла восьмой бит. В результате такого преобразования код символа уменьшался на 128, превращаясь в код символа латинского алфавита. Возникла необходимость повысить устойчивость передаваемой текстовой информации к обнулению 8 бита.

К счастью, значительное число букв кириллицы имеет фонетические аналоги в латинском алфавите. Например, Ф и F, Р и R. Есть несколько букв, совпадающих даже по начертанию. Расположив русские буквы в кодовой таблице таким образом, чтобы их код превышал код аналогичных латинских на число 128, добились того, что потеря 8-го бита превращала текст хотя и в состоящий из одной латиницы, но все равно понимаемый русскоязычным пользователем.

Так как из всех операционных систем, распространенных в то время, самыми удобными средствами работы с сетью обладали различные клоны операционной системы Unix, то эта кодировка стала фактическим стандартом в этих системах. Таковой она является и сейчас в ОС Linux. И именно эта кодировка чаще всего применяется для обмена почтой и новостями в Интернет.

Далее наступила эра персональных компьютеров и операционной системы MS DOS. Как выяснилось, кодировка Koi8-R для нее не подходила (так же, как и ISO 8859-5), в ее таблице некоторые русские буквы находились на тех местах, которые многие программы предполагали заполненными псевдографикой (горизонтальные и вертикальные черточки, уголки и т. д.). Поэтому была придумана еще одна кодировка кириллицы, в таблице которой русские буквы "обтекали" со всех сторон графические символы. Назвали эту кодировку альтернативной (alt), поскольку она была альтернативой официальному стандарту -- кодировке ISO-8859-5. Неоспоримым достоинством этой кодировки является то, что русские буквы в ней расположены в алфавитном порядке.

После появления ОС Windows от фирмы Microsoft выяснилось, что альтернативная кодировка по некоторым причинам для нее не подходит. Снова передвинув русские буквы в таблице (появилась возможность -- ведь псевдографика в Windows не требуется), получили кодировку Windows 1251 (Win-1251).

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

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

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

Условно можно считать, что 1 Кбайт примерно равен 1000 байт. Условность связана с тем, что для вычислитель­ной техники, работающей с двоичными числами, более удобно представление чисел в виде степени двойки, и потому на самом деле 1 Кбайт равен 210 байт (1024 байт). Однако всюду, где это не принципиально, с инженерной погрешностью (до 3 %) «забывают» о «лишних» байтах.
Пример
Книга содержит 100 страниц; на каждой странице -- 35 строк, в каждой строке -- 50 символов. Рассчитаем объем информации, содержащийся в книге.

Страница содержит 35 x 50 = 1750 байт информации. В килобайтах измеряют сравнительно небольшие объемы данных. Условно можно считать, что одна страница неформатированного машинописного текста составляет около 2 Кбайт.

Объем всей информации в книге (в разных единицах):

1750 x 100 = 175000 байт.

175000 / 1024 = 170,8984 Кбайт.

170,8984 / 1024 = 0,166893 Мбайт.

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

1 Мбайт = 1024 Кбайт = 1020 байт

1 Гбайт = 1024 Мбайт = 1030 байт

1 Тбайт = 1024 Гбайт = 1040 байт

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

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

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

Растровые изображения представляют собой однослойную сетку точек, называемых пикселами (pixel, от англ. picture element). Для черно-белого изображения (без полутонов) пиксел может принимать только два значения: белый и черный (светится -- не светится), а для его кодирования достаточно одного бита памяти: 1 -- белый, 0 -- черный.

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

На RGB-мониторах все разнообразие цветов получается сочетанием базовых цветов -- красного (Red), зеленого (Green), синего (Blue), из которых можно получить 8 основных комбинаций:

цвет

цвет

коричневый

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

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

Объекты векторного изображения, в отличии от растровой графики, могут изменять свои размеры без потери качества (при увеличении растрового изображения увеличивается зернистость).

Кодирование звука

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

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


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

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

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

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

Конечно, такая система кодирования позволяет записать далеко не всякий звук, она годится только для инструментальной музыки. Но есть у нее и неоспоримые преимущества: чрезвычайно компактная запись, естественность для музыканта (практически любой MIDI-редактор позволяет работать с музыкой в виде обычных нот), легкость замены инструментов, изменения темпа и тональности мелодии.

Заметим, что существуют и другие, чисто компьютерные, форматы записи музыки. Среди них следует отметить формат MP3, позволяющий с очень большим качеством и степенью сжатия кодировать музыку. При этом вместо 18--20 музыкальных композиций на стандартный компакт-диск (CDROM) помещается около 200. Одна песня занимает примерно 3,5 Mb, что позволяет пользователям сети Интернет легко обмениваться музыкальными композициями.

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

Примеры векторов и матриц в Матсаd

Форматы файлов

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

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

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

Unix оказал очень большое влияние на другие операционные системы персональных компьютеров. Почти все они поддерживают идею Unix о том, что файл -- это просто последовательность байтов. Файлы, представляющие собой поток данных, стали использоваться при обмене информацией между компьютерными системами. Если используется более сложная структура файла (как в операционных системах OS/2 и Macintosh), она всегда может быть преобразована в поток байтов, передана и на другом конце канала связи воссоздана в исходном виде.

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

Способ, которым данные организованы в байты, называется форматом файла.

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

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

Все файлы условно можно разделить на две части -- текстовые и двоичные.

Текстовые файлы -- наиболее распространенный тип данных во всем компьютерном мире. Для хранения каждого символа чаще всего отводится один байт, а кодирование текстовых файлов выполняют с помощью специальных таблиц, в которых каждому символу соответствует определенное число, не превышающее 255. Файл, для кодировки которого используется только 127 первых чисел, называется ASCII-файлом (сокращение от American Standard Code for Information Intercange -- американский стандартный код для обмена информацией), но в таком файле не могут быть представлены буквы, отличные от латиницы (в том числе и русские). Большинство национальных алфавитов можно закодировать с помощью восьмибитной таблицы. Такие языки, как китайский, содержат значительно больше 256 символов, поэтому для кодирования каждого из них используют несколько байтов. Для экономии места зачастую применяется следующий прием: некоторые символы кодируются с помощью одного байта, в то время как для других используются два или более байтов. Одной из попыток обобщения такого подхода является стандарт Unicode, в котором для кодирования символов используется диапазон чисел от нуля до 65 536. Такой широкий диапазон позволяет представлять в численном виде символы языка людей из любого уголка планеты.

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

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

Единицы хранения данных

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

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

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

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

Рис. 1.5. Пример иерархической структуры данных


Рис. 1.6. Пример, поясняющий принцип действия метода дихотомии

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

Его суть понятна из примера, представленного на рис. 1.6. В иерархической структуре, построенной методом дихотомии, путь доступа к любому элементу можно представить как путь через рациональный лабиринт с поворотами налево (0) или направо (1) и, таким образом, выразить путь доступа в виде компактной двоичной записи. В нашем примере путь доступа к текстовому процессору Word 2000 выразится следующим двоичным числом: 1010.

Упорядочение структур данных

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

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

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


Основы логики высказываний

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

Слово логика означает систематический метод рассуждений. Мы познакомимся с одним из разделов этой науки - исчислением высказываний . Исчисление высказываний - совокупность правил, используемых для определения истинности или ложности логических предложений. Логике высказываний можно "научить" вычислительную машину, которая таким образом получает возможность "рассуждать", хотя и на весьма примитивном уровне.

Математик Джордж Буль () описал алгебру, основанную на операторах И, ИЛИ и НЕ и булевых переменных, которые принимают только два значения, например, 0 или 1.

Буль (Boole) Джордж (2 ноября 1815, Линкольн, Великобритания - 8 декабря 1864, Баллинтемпль, Ирландия), английский математик и логик, один из основоположников математической логики. Разработал алгебру логики (булеву алгебру) («Исследование законов мышления», 1854), основу функционирования цифровых компьютеров.

Джордж Буль родился в бедной рабочей семье. Первые уроки математики получил у отца и, хотя посещал местную школу, в общем его можно считать самоучкой. В 12 лет он уже знал латынь, затем овладел греческим, французским, немецким и итальянским языками . В 16 лет уже преподавал в деревенской школе, а в 20 открыл собственную школу в Линкольне. В редкие часы досуга зачитывался математическими журналами Механического института, интересовался работами математиков прошлого - Ньютона, Лапласа, Лагранжа, проблемами современной алгебры.

Начиная с 1839 года, Буль стал посылать свои работы в новый Кембриджский математический журнал. Его первая работа «Исследования по теории аналитических преобразований» касалась дифференциальных уравнений, алгебраических проблем линейной трансформации и концепции инвариантности. В своем исследовании 1844 года, опубликованном в «Философских трудах Королевского общества», он коснулся проблемы взаимодействия алгебры и исчисления. В том же году молодой ученый был награжден медалью Королевского общества за вклад в математический анализ.

Вскоре после того, как Буль убедился, что его алгебра вполне применима к логике, в 1847 году он опубликовал памфлет «Математический анализ логики», в котором высказал идею, что логика более близка к математике, чем к философии. Эта работа была чрезвычайно высоко оценена английским математиком Августом де Морганом. Благодаря этой работе Буль в 1849 году получил пост профессора математики Куинз-колледжа в графстве Корк, несмотря на то что он даже не имел университетского образования.

В 1854 году он опубликовал работу «Исследование законов мышления, базирующихся на математической логике и теории вероятностей». Работы 1847 и 1854 годов дали рождение алгебре логики, или булевой алгебре. Буль первым показал, что существует аналогия между алгебраическими и логическими действиями, так как и те, и другие предполагают лишь два варианта ответов - истина или ложь, нуль или единица. Он придумал систему обозначений и правил, пользуясь которыми можно было закодировать любые высказывания, а затем манипулировать ими как обычными числами. Булева алгебра располагала тремя основными операциями - И, ИЛИ, НЕ, которые позволяли производить сложение, вычитание, умножение, деление и сравнение символов и чисел. Таким образом, Булю удалось подробно описать двоичную систему счисления. В своей работе «Законы мышления» (1854) Буль окончательно сформулировал основы математической логики. Он также попытался сформулировать общий метод вероятностей, с помощью которого из заданной системы вероятных событий можно было бы определить вероятность последующего события, логически связанного с ними.

В 1857 году Буль был избран членом Королевского общества. Его работы «Трактат о дифференциальных уравнениях» (1859) и «Трактат о вычислении предельных разностей» (1860) оказали колоссальное влияние на развитие математики. В них нашли свое отражение наиболее важные открытия Буля. Идеи Буля нашли применение в использующих двоичный код цифровых компьютерах.

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

Высказывание или предложение - это просто утверждение, которое может быть истинно или ложно. Примерами могут служить следующие утверждения: "Сидорову 20 лет", "Сидоров - студент". Такие высказывания называются атомарными. Примером составного предложения может служить высказывание "Сидорову 20 лет и он студент", которое содержит два отдельных атомарных предложения (атома), каждое из которых может быть истинно или ложно. Если, например, Сидорову 19 лет, то высказывание "Сидорову 20 лет" ложно. Составные и атомарные предложения называются в логике формулами.

В исчислении высказываний не рассматриваются утверждения, имеющие значения, отличные от "истинно" и "ложно". Используется двузначная логика: ответ, отличный от "Да", есть "Нет". Древние философы назвали этот принцип "законом исключенного третьего". Существуют другие логики, правила которых отличаются от правил исчисления высказываний, например, трехзначная логика со значениями "Да", "Нет", "Не знаю" или так называемая нечеткая логика, где можно оперировать утверждениями типа "С вероятностью 90% величина А больше 3".

В таблице приводятся обозначения, используемые для логических связок в различной литературе. Мы в дальнейшем изложении будем использовать обозначения, принятые в большинстве языков программирования. Истинное значение далее будем обозначать символом T (от True - истина), а ложное - F (от False - ложь).

Связка

Законы булевой алгебры

Составные предложения

Для построения составных предложений чаще всего используются связки - И (&& , конъюнкция) и ИЛИ (|| , дизъюнкция). Смысл связки И - тот же, что и в разговорной речи: конъюнкция двух предложений истинна тогда и только тогда, когда они оба истинны. Связка ИЛИ "двойственна" связке И: дизъюнкция двух предложений ложна только если они оба ложны.

Дизъюнкция (ИЛИ) нескольких предложений ложна тогда, когда все они ложны. Рассмотрим, например, утверждение "Плата за проживание снижена для студентов, лиц моложе 21 года и безработных ". Согласно ему приходится платить полную цену, только если все три исключения нарушены.

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

Кроме И и ИЛИ, имеется еще модификатор НЕ (! , отрицание) результат применения которого противоположен его аргументу: !T = F, !F = T. В математической литературе для обозначения отрицания выражения проводят горизонтальную черту над ним.

Значения логических выражений, содержащих связки И, ИЛИ и модификатор НЕ, вычисляются с помощью так называемой таблицы истинности:

A

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

Пример
Вычислить значение логической формулы!X && Y || X && Z
при следующих значениях переменных: X = F, Y = T, Z = T.

Решение
Отметим цифрами порядок выполнения операций:

Используя таблицу истинности, вычислим формулу по шагам:

Итак, формула при данных значениях аргументов принимает значение T.

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

Законы
коммутативности

А && В = B && A
A || B = B || A

Законы
ассоциативности

A && (B && C) = (A && B) && C
A || (B|| C) = (A || B) || C

Законы
дистрибутивности

A && (B || C) = (A && B) || (A && C)
A || (B && C) = (A || B) && (A || C)

Свойства операций
И, ИЛИ

A && T = A; A && F = F
A || F = A; A || T = T

Свойства отрицания

A && !A = F; A || !A = T

Закон коммутативности утверждает, что можно переставлять операнды при использовании конъюнкции или дизъюнкции. Это может показаться очевидным, но имеются операторы вроде арифметического минуса, для которых это неверно: A - B отлично от B - A. Закон ассоциативности позволяет расставлять скобки произвольным образом, если в логическом выражении используется лишь одна из связок && и ||. В таких случаях можно вообще обойтись без скобок, так как закон ассоциативности гарантирует получение одного и того же результата независимо от того, как сгруппированы предложения.

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

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

{ свойство операции ИЛИ }

(A || F) && (A || B) =

{ дистрибутивность }

{ коммутативность }

{ свойство операции И }

{ свойство операции ИЛИ }

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


Импликация и эквивалентность

Известно, что любая логическая формула может быть выражена через три ранее рассмотренные логические операции, однако на практике часто используют еще две логические связки. Первая из них называется импликацией и служит для задания так называемых условных высказываний. В русском языке этой логической операции соответствуют фразы если..., то... или когда..., тогда... Импликация - двухместная операция: часть формулы до импликации называют основанием условного высказывания, а часть, расположенную за ней - следствием. В логических формулах импликация обозначается знаком ->. Операция A -> B определяет логическую функцию, тождественно совпадающую с функцией! A || B.

Пример
Дано сложное высказывание: "Если выглянет солнце, то станет тепло". Требуется записать его в виде логической формулы.
Обозначим через А простое высказывание "выглянет солнце", а через В - "станет тепло". Тогда логической формулой этого сложного высказывания будет импликация: A -> B.

Другой распространенной операцией является эквивалентность. Ее аналог в разговорной речи - фразы, подобные словосочетанию тогда и только тогда, когда... или если и только если... Для ее обозначения используется символ <-> или просто =. Мы будем использовать для обозначения эквивалентности обе эти формы. Отметим, что логическая формула A <-> B эквивалентна формуле (A -> B) && (B -> A).

Пример
Дано сложное высказывание: "В зачетную книжку выставляется оценка за экзамен тогда и только тогда, когда он сдан". Нужно преобразовать высказывание к логической формуле. Обозначим через А простое высказывание "В зачетную книжку выставляется оценка за экзамен", а через В - "Экзамен сдан". Тогда логическая формула сложного высказывания запишется в виде A <-> B.

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

A -> B

A <-> B

Рассмотренные нами логические операции в порядке убывания приоритетов располагаются так: отрицание, конъюнкция, дизъюнкция, импликация, эквивалентность.

ТЕМА 3. ПРЕДСТАВЛЕНИЕ ИНФОРМАЦИИ

3.1. Язык как способ представления информации. Кодирование информации

Язык - множество символов и совокупность правил, определяющих способы составления из этих символов осмысленных сообщений. Семантика - система правил и соглашений, определяющая толкование и придание смысла конструкциям языка.
Кодирование информации - это процесс формирования определенного представления информации. При кодировании информация представляется в виде дискретных данных. Декодирование является обратным к кодированию процессом.
В более узком смысле под термином "кодирование" часто понимают переход от одной формы представления информации к другой, более удобной для хранения, передачи или обработки. Компьютер может обрабатывать только информацию, представленную в числовой форме. Вся другая информация (например, звуки, изображения, показания приборов и т. д.) для обработки на компьютере должна быть преобразована в числовую форму. Например, чтобы перевести в числовую форму музыкальный звук, можно через небольшие промежутки времени измерять интенсивность звука на определенных частотах, представляя результаты каждого измерения в числовой форме. С помощью программ для компьютера можно выполнить преобразования полученной информации.
Аналогичным образом на компьютере можно обрабатывать текстовую информацию. При вводе в компьютер каждая буква кодируется определенным числом, а при выводе на внешние устройства (экран или печать) для восприятия человеком по этим числам строятся изображения букв. Соответствие между набором букв и числами называется кодировкой символов .
Знаки или символы любой природы, из которых конструируются информационные сообщения, называют кодами . Полный набор кодов составляет алфавит кодирования. Простейшим алфавитом, достаточным для записи информации о чем-либо, является алфавит из двух символов, описывающих два его альтернативных состояния ("да" - "нет", "+" - "-", 0 или 1).
Как правило, все числа в компьютере представляются с помощью нулей и единиц (а не десяти цифр, как это привычно для людей). Иными словами, компьютеры обычно работают в двоичной системе счисления, поскольку при этом устройства для их обработки получаются значительно более простыми. Ввод чисел в компьютер и вывод их для чтения человеком может осуществляться в привычной десятичной форме, а все необходимые преобразования выполняют программы, работающие на компьютере.
Любое информационное сообщение можно представить, не меняя его содержания, символами того или иного алфавита или, говоря иначе, получить ту или иную форму представления . Например, музыкальная композиция может быть сыграна на инструменте (закодирована и передана с помощью звуков), записана с помощью нот на бумаге (кодами являются ноты) или намагничена на диске (коды - электромагнитные сигналы).
Способ кодирования зависит от цели, ради которой оно осуществляется. Это может быть сокращение записи, засекречивание (шифровка) информации, или, напротив, достижение взаимопонимания. Например, система дорожных знаков, флажковая азбука на флоте, специальные научные языки и символы - химические, математические, медицинские и др., предназначены для того, чтобы люди могли общаться и понимать друг друга. От того, как представлена информация, зависит способ ее обработки, хранения, передачи и т.д.
Компьютер с точки зрения пользователя работает с информацией самой различной формы представления: числовой, графической, звуковой, текстовой и пр. Но мы уже знаем (упоминалось выше), что он оперирует только цифровой (дискретной) информацией. Значит, должны существовать способы перевода информации из внешнего вида, удобного пользователю, во внутреннее представление, удобное компьютеру, и обратно.

3.2. Позиционные и непозиционные системы счисления

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

I V X L C D M
1 5 10 50 100 500 1000

В числе цифры записываются слева направо в порядке убывания. Величина числа определяется как сумма или разность цифр в числе. Если меньшая цифра стоит слева от большей цифры, то она вычитается, если справа - прибавляется. Например, VI = 5 + 1 = 6, а IX = 10 - 1 = 9, СССXXVII=100+100+100+10+10+5+1+1=327.
В позиционных системах счисления величина, обозначаемая цифрой в записи числа, зависит от ее позиции. Количество используемых цифр называется основанием системы счисления. Место каждой цифры в числе называется позицией .

Первая известная нам система, основанная на позиционном принципе - шестидесятеричная вавилонская. Цифры в ней были двух видов, одним из которых обозначались единицы, другим - десятки. Следы вавилонской системы сохранились до наших дней в способах измерения и записи величин углов и промежутков времени.
Однако наибольшую ценность для нас имеет индо-арабская десятичная система. Индийцы первыми использовали ноль для указания позиционной значимости величины в строке цифр. Эта система получила название десятичной системы счисления, так как в ней десять цифр.
Для того чтобы лучше понять различие позиционной и непозиционной систем счисления, рассмотрим пример сравнения двух чисел. В позиционной системе счисления сравнение двух чисел происходит следующим образом: в рассматриваемых числах слева направо сравниваются цифры, стоящие в одинаковых позициях. Большая цифра соответствует большему значению числа. Например, для чисел 123 и 234, 1 меньше 2, поэтому число 234 больше, чем число 123. В непозиционной системе счисления это правило не действует. Примером этого может служить сравнение двух чисел IX и VI. Несмотря на то, что I меньше, чем V, число IX больше, чем число VI.
Далее мы будем рассматривать только позиционные системы счисления.
Основание системы счисления, в которой записано число, обычно обозначается нижним индексом. Например, 555 7 - число, записанное в семеричной системе счисления. Если число записано в десятичной системе, то основание, как правило, не указывается. Основание системы - это тоже число, и его мы будем указывать в обычной десятичной системе. Вообще, число x может быть представлено в системе с основанием p , как x=a n *p n +a n -1*p n-1 + a 1 *p 1 +a 0 *p 0 , где a n ...a 0 - цифры в представлении данного числа.
Так, например, 1035 10 =1*10 3 +0*10 2 +3*10 1 +5*10 0 ;
1010 2 = 1*2 3 +0*2 2 +1*2 1 +0*2 0 = 10.
Наибольший интерес при работе на ЭВМ представляют системы счисления с основаниями 2, 8 и 16. Вообще говоря, этих систем счисления обычно хватает для полноценной работы, как человека, так и вычислительной машины. Однако иногда в силу различных обстоятельств приходится обращаться к другим системам счисления, например, к троичной, семеричной или системе счисления по основанию 32.
Для того чтобы нормально оперировать с числами, записанными в таких нетрадиционных системах, важно понимать, что принципиально они ничем не отличаются от привычной нам десятичной системы счисления. Сложение, вычитание, умножение в них осуществляется по одной и той же схеме.
Почему же мы не пользуемся другими системами счисления? В основном потому, что в повседневной жизни мы привыкли пользоваться десятичной системой счисления, и нам не требуется никакая другая система счисления. В вычислительных же машинах используется двоичная система счисления, так как оперировать над числами, записанными в двоичном виде, довольно просто.
Часто в информатике используют шестнадцатеричную систему, так как запись чисел в ней значительно короче записи чисел в двоичной системе. Может возникнуть вопрос: почему бы не использовать для записи очень больших чисел систему счисления, например по основанию 50? Для такой системы счисления необходимы 10 обычных цифр плюс 40 знаков, которые соответствовали бы числам от 10 до 49 и вряд ли кому-нибудь понравится работать с этими сорока знаками. Поэтому в реальной жизни системы счисления по основанию, большему 16, практически не используются.
Методику представления информации в двоичной форме можно пояснить, проведя следующую игру. Нужно у собеседника получить интересующую нас информацию, задавая любые вопросы, но получая в ответ только одно из двух ДА либо НЕТ. Известным способом получения во время этого диалога двоичной формы информации является перечисление всех возможных событий. Рассмотрим простейший случай получения информации. Вы задаете только один вопрос: "Идет ли дождь?". При этом условимся, что с одинаковой вероятностью ожидаете ответ: "ДА" или "НЕТ". Легко увидеть, что любой из этих ответов несет самую малую порцию информации. Эта порция определяет единицу измерения информации, называемую битом. Благодаря введению понятия единицы информации появилась возможность определения размера любой информации числом битов. Образно говоря, если, например, объем грунта определяют в кубометрах, то объем информации - в битах. Условимся каждый положительный ответ представлять цифрой 1, а отрицательный - цифрой 0. Тогда запись всех ответов образует многозначную последовательность цифр, состоящую из нулей и единиц, например 0100.
Люди предпочитают десятичную систему, вероятно, потому, что с древних времен считали по пальцам. Но, не всегда и не везде люди пользовались десятичной системой счисления. В Китае, например, долгое время применялась пятеричная система счисления. В ЭВМ используют двоичную систему потому, что она имеет ряд преимуществ перед другими:

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

В двоичной системе счисления всего две цифры, называемые двоичными (binary digits). Сокращение этого наименования привело к появлению термина бит, ставшего названием разряда двоичного числа. Веса разрядов в двоичной системе изменяются по степеням двойки. Поскольку вес каждого разряда умножается либо на 0, либо на 1, то в результате значение числа определяется как сумма соответствующих значений степеней двойки. Если какой-либо разряд двоичного числа равен 1, то он называется значащим разрядом. Запись числа в двоичном виде намного длиннее записи в десятичной системе счисления.
Арифметические действия, выполняемые в двоичной системе, подчиняются тем же правилам, что и в десятичной системе. Только в двоичной системе счисления перенос единиц в старший разряд возникает чаще, чем в десятичной. Вот как выглядит таблица сложения в двоичной системе:

Рассмотрим подробнее, как происходит процесс умножения двоичных чисел. Пусть надо умножить число 1101 на 101 (оба числа в двоичной системе счисления). Машина делает это следующим образом: она берет число 1101 и, если первый элемент второго множителя равен 1, то она заносит его в сумму. Затем сдвигает число 1101 влево на одну позицию, получая тем самым 11010, и если, второй элемент второго множителя равен единице, то тоже заносит его в сумму. Если элемент второго множителя равен нулю, то сумма не изменяется.
Двоичное деление основано на методе, знакомом вам по десятичному делению, т. е. сводится к выполнению операций умножения и вычитания. Выполнение основной процедуры - выбор числа, кратного делителю и предназначенного для уменьшения делимого, здесь проще, так как таким числом могут быть только либо 0, либо сам делитель.
Следует отметить, что большинство калькуляторов, реализованных на компьютере, позволяют осуществлять работу в системах счисления с основаниями 2, 8, 16 и, конечно, 10.
При наладке аппаратных средств компьютера или создании новой программы возникает необходимость "заглянуть внутрь" памяти машины, чтобы оценить ее текущее состояние. Но там все заполнено длинными последовательностями нулей и единиц двоичных чисел. Эти последовательности очень неудобны для восприятия человеком, привыкшим к более короткой записи десятичных чисел. Кроме того, естественные возможности человеческого мышления не позволяют оценить быстро и точно величину числа, представленного, например, комбинацией из 16 нулей и единиц.
Для облегчения восприятия двоичного числа решили разбивать его на группы разрядов, например, по три или четыре разряда. Эта идея оказалась очень удачной, так как последовательность из трех бит имеет 8 комбинаций, а последовательность из 4 бит - 16. Числа 8 и 16 являются степенями двойки, поэтому легко находить соответствие с двоичными числами. Развивая эту идею, пришли к выводу, что группы разрядов можно закодировать, сократив при этом длину последовательности знаков. Для кодировки трех битов требуется восемь цифр, поэтому взяли цифры от 0 до 7 десятичной системы. Для кодировки же четырех битов необходимо шестнадцать знаков; для этого взяли 10 цифр десятичной системы и 6 букв латинского алфавита: A, B, C, D, E, F. Полученные системы, имеющие основания 8 и 16, назвали соответственно восьмеричной и шестнадцатеричной.
В восьмеричной (octal) системе счисления используются восемь различных цифр 0, 1, 2, 3, 4, 5, 6, 7. Основание системы - 8. При записи отрицательных чисел перед последовательностью цифр ставят знак минус. Сложение, вычитание, умножение и деление чисел, представленных в восьмеричной системе, выполняются весьма просто подобно тому, как это делают в общеизвестной десятичной системе счисления. В различных языках программирования запись восьмеричных чисел начинается с 0, например, запись 011 означает число 9.
В шестнадцатеричной (hexadecimal) системе счисления применяется десять различных цифр и шесть первых букв латинского алфавита. При записи отрицательных чисел слева от последовательности цифр ставят знак минус. Для того чтобы при написании компьютерных программ отличить числа, записанные в шестнадцатеричной системе, от других, перед числом ставят 0x. То есть 0x11 и 11 - это разные числа. В других случаях можно указать основание системы счисления нижним индексом.
Шестнадцатеричная система счисления широко используется при задании различных оттенков цвета при кодировании графической информации (модель RGB). Так, в редакторе гипертекста Netscape Composer можно задавать цвета для фона или текста как в десятичной, так и шестнадцатеричной системах счисления.

3.3. Перевод чисел из одной системы счисления в другую

Представление чисел в развернутой форме одновременно является способом перевода чисел в десятичную систему из любой другой позиционной системы счисления. Достаточно подсчитать результат по правилам десятичной арифметики.
Например, надо получить десятичные эквиваленты чисел: 101,01 2 ; 673,2 8 ; 15AC 16 .

Перевод десятичного числа в другую систему счисления может выполняться разными способами. При этом надо учитывать, что алгоритмы перевода целых чисел и правильных дробей будут отличаться. Для смешанного числа целая и дробная части переводятся отдельно по соответствующим алгоритмам. В итоговой записи искомого они объединяются и разделяются запятой.
Так называемый метод поэтапного деления заключается в последовательном целочисленном делении исходного числа и получаемых неполных частных на основание той системы счисления, в которую осуществляется перевод. Остатки от деления составляют искомое число.
Алгоритм перевода целого десятичного числа N p :
1. Разделить нацело число N на p .
2. Полученный остаток от деления дает цифру, стоящую в нулевом разряде p -ичной записи числа N .
3. Полученное частное снова разделить нацело на p и снова запомнить полученный остаток - это цифра первого разряда, и т.д.
4. Такое последовательное деление продолжается до тех пор, пока частное не станет равным 0 .
5. Цифрами искомого числа являются остатки от деления, выписанные слева направо начиная с последнего полученного остатка.
Для оформления записи перевода предлагается один из возможных способов: слева от черты записываются неполные частные от целочисленного деления на основание, а справа - остатки от деления.
Например, надо перевести десятичное число 26 в двоичную, троичную и шестнадцатеричную системы счисления.

Результат: 26 10 =11010 2 , 26 10 =222 3 , 26=1A 16 .
Алгоритм перевода правильной десятичной дроби N в позиционную систему с основанием p :
1. Умножить данное число на новое основание p .
2. Целая часть полученного произведения является цифрой старшего разряда искомой дроби.
3. Дробная часть полученного произведения вновь умножается на p , и целая часть результата считается следующей цифрой искомой дроби.
4. Операции продолжать до тех пор, пока дробная часть не окажется равной нулю либо не будет достигнута требуемая точность.
Например, надо перевести десятичную дробь 0,375 в двоичную, троичную и шестнадцатеричную систему счисления. Перевод выполнить с точностью до третьего знака.

Результат: 0,375 10 =0,011 2 ; 0,375 10 =0,101 2 ; 0,375 10 =0,6 16 .
Наиболее часто встречающиеся системы счисления - это двоичная, шестнадцатеричная и десятичная. Как же связаны между собой представления числа в различных системах счисления? Рассмотрим различные способы перевода чисел из одной системы счисления в другую на конкретных примерах.
Пусть требуется перевести число 567 из десятичной системы счисления в двоичную систему. Сначала определим максимальную степень двойки, такую, чтобы два в этой степени было меньше или равно исходному числу. В нашем случае это 9, т. к. 2 9 =512, а 2 10 =1024, что больше начального числа. Таким образом, мы получим число разрядов результата. Оно равно 9+1=10. Поэтому результат будет иметь вид 1ххххххххх, где вместо х могут стоять любые двоичные цифры. Найдем вторую цифру результата. Возведем двойку в степень 9 и вычтем из исходного числа: 567-2 9 =55. Остаток сравним с числом 2 8 =256. Так как 55 меньше 256, то девятый разряд будет нулем, т.е. результат примет вид 10хххххххх. Рассмотрим восьмой разряд. Так как 2 7 =128>55, то и он будет нулевым.
Седьмой разряд также оказывается нулевым. Искомая двоичная запись числа принимает вид 1000хххххх. 2 5 =32 При другом способе перевода чисел используется операция деления в столбик. Рассмотрим то же самое число 567. Разделив его на 2, получим частное 283 и остаток 1. Проведем ту же самую операцию с числом 283. Получим частное 141, остаток 1. Опять делим полученное частное на 2, и так до тех пор, пока частное не станет меньше делителя. Теперь для того, чтобы получить число в двоичной системе счисления, достаточно записать последнее частное, то есть 1, и приписать к нему в обратном порядке все полученные в процессе деления остатки.

Результат, естественно, не изменился: 567 в двоичной системе счисления записывается как 1000110111.
Эти два способа применимы при переводе числа из десятичной системы в систему с любым основанием. Для закрепления навыков рассмотрим перевод числа 567 в систему счисления с основанием 16.
Сначала осуществим разложение данного числа по степеням основания. Искомое число будет состоять из трех цифр, т. к. 16 2 =256 Конечно, не надо забывать и о том, что для записи числа в шестнадцатеричной системе счисления, необходимо заменить 10 на A, 11 на B и так далее.

Операция перевода в десятичную систему выглядит гораздо проще, так как любое десятичное число можно представить в виде x = a 0 *p n + a 1 *p n-1 + ... + a n-1 *p 1 + a n *p 0 , где a 0 ... a n - это цифры данного числа в системе счисления с основанием p.
Например, переведем число 4A3F в десятичную систему. По определению, 4A3F= 4*16 3 +A*16 2 +3*16+F. Заменив A на 10, а F на 15, получим 4*16 3 +10*16 2 +3*16+15= 19007.
Пожалуй, проще всего осуществляется перевод чисел из двоичной системы в системы с основанием, равным степеням двойки (8 и 16), и наоборот. Для того чтобы целое двоичное число записать в системе счисления с основанием 2 n , нужно

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

Двоично-шестнадцатеричная таблица

Например, надо перевести в восьмеричную и шестнадцатеричную системы счисления число 1011000010,0011001 2 .
Для этого разобьем исходное число на группы по 3 цифры, начиная от десятичной запятой, и заменим триады восьмеричными цифрами:

Разобьем число на группы по 4 цифры, начиная от десятичной запятой, и заменим тетрады шестнадцатеричными цифрами:

Результат: 1011000010,0011001 2 =1302,144 8 =2C2,32 16

3.4. Арифметические операции в позиционных системах счисления

Арифметические операции в рассматриваемых позиционных системах счисления выполняются по законам, известным из десятичной арифметики. Двоичная система счисления имеет основание 2, и для записи чисел используются всего две цифры 0 и 1 в отличие от десяти цифр десятичной системы счисления.
Рассмотрим сложение одноразрядных чисел: 0+0=0, 0+1=1, 1+0=0. Эти равенства справедливы как для двоичной системы, так и для десятичной системы. Чему же равно 1+1? В десятичной системе это 2. Но в двоичной системе нет цифры 2! Известно, что при десятичном сложении 9+1 происходит перенос 1 в старший разряд, так как старше 9 цифры нет. То есть 9+1=10. В двоичной системе старшей цифрой является 1. Следовательно, в двоичной системе 1+1=10, так как при сложении двух единиц происходит переполнение разряда и производится перенос в старший разряд. Переполнение разряда наступает тогда, когда значение числа в нем становится равным или большим основания. Для двоичной системы это число равно 2 (10 2 =2 10).

Продолжая добавлять единицы, заметим: 10 2 +1=11 2 , 11 2 +1=100 2 - произошла "цепная реакция", когда перенос единицы в один разряд вызывает перенос в следующий разряд.
Сложение многоразрядных чисел происходит по этим же правилам с учетом возможности переносов из младших разрядов в старшие.
Вычитание многоразрядных двоичных чисел производится с учетом возможных заёмов из старших разрядов.
Действия умножения и деления чисел в двоичной арифметике можно выполнять по общепринятым для позиционных систем правилам.

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


Для двоичной системы счисления:

Аналогичные таблицы составляются для любой позиционной системы счисления. Пользуясь такими таблицами, можно выполнять действия над многозначными числами.
Пример 4. Выполнить действия в пятеричной системе счисления: 342 5 +23 5 ; 213 5 . 5 5 .
Решение
Составим таблицы сложения и умножения для пятеричной системы счисления:

Выполним сложение.
Рассуждаем так: два плюс три равно 10 (по таблице); 0 пишем, 1 - в уме. Четыре плюс два равно 11 (по таблице), да еще один, 12. 2 пишем, 1 - в уме. Три да один равно 4 (по таблице). Результат - 420.


Выполним умножение.
Рассуждаем так: трижды три - 14 (по таблице); 4 пишем, один - в уме. Трижды один дает 3, да плюс один, - пишем 4. Дважды три (по таблице) - 11; 1 пишем, 1 переносим влево. Окончательный результат - 1144.
Если числа, участвующие в выражении, представлены в разных системах, нужно сначала привести их к одному основанию.

Пример 5. Сложить два числа: 17 8 и 17 16 .
Решение
Приведем число 17 16 к основанию 8 посредством двоичной системы (пробелами условно обозначено деление на тетрады и триады): 17 16 =10111 2 =10111 2 =27 8 .
Выполним сложение в восьмеричной системе:

Сделаем проверку, выполнив те же действия в десятичной системе:

Пример 6. Вычислить выражение, записав результат в двоичной системе счисления.
Решение
Приведем числа, участвующие в выражении, в единую систему счисления, например, десятичную:

Выполним указанные действия:
23-81/27=20 10 .
Запишем результат в двоичной системе счисления: 20 10 =10100 2 .
Таким образом, арифметические действия в позиционных системах счисления выполняются по общим правилам. Необходимо только помнить, что перенос в следующий разряд при сложении и заем из старшего разряда при вычитании определяются величиной основания системы счисления.

Вопросы для самоконтроля

  1. Что такое система счисления? Алгоритм перевода из десятичной в недесятичную систему счисления. Примеры.
  2. Что такое позиционная система счисления? Алгоритм перевода из недесятичной в десятичную систему счисления. Пример. Суммирование в недесятичной системе счисления. Примеры.
  3. Что такое непозиционная система счисления? Умножение и деление в недесятичной системе счисления. Примеры.
  4. Понятие позиционной системы счисления. Унарная, фибоначиева и другие системы счисления (вопрос необязательный)
  • Сергей Савенков

    какой то “куцый” обзор… как будто спешили куда то