Методичка. Учебное пособие В. М. Лопатин издание второе, стереотипное 1 17
Скачать 4.33 Mb.
|
Перевод чисел из одной системы счисления в другую Развернутая форма записи числа используется для перевода чисел в десятич- ную систему счисления. Обратный перевод из десятичной системы в двоичную и другие системы осуществляется с помощью поэтапного деления числа на ос- нование системы счисления с определением остатка от целочисленного деления. В табл. 5 в качестве примера показан процесс перевода десятичного числа 204 в двоичную, восьмеричную и шестнадцатеричную системы. Стрелкой показаны порядок считывания и записи остатков от целочисленного деления. При переводе дробного десятичного числа в двоичную систему отдельно пе- реводится целая и дробная часть. Целая часть переводится путем подсчета остат- ков поэтапного целочисленного деления на 2, а дробная – путем подсчета целых частей при поэтапном умножении на 2. Пример перевода дробного числа в двоичную систему счисления – в табл. 6. Таблица 5 Перевод целого числа из десятичной системы счисления Двоичная Восьмеричная Шестнадцатеричная 204 : 2 = 102 + 0 102 : 2 = 51 + 0 51 : 2 = 25 + 1 25 : 2 = 12 + 1 12 : 2 = 6 + 0 6 : 2 = 3 + 0 3 : 2 = 1 + 1 1 : 2 = 0 + 1 204 : 8 = 25 + 4 25 : 8 = 3 + 1 3 : 8 = 0 + 3 204 : 16 = 12 + 12 12 : 16 = 0 + 12 204 10 =11001100 2 204 10 =314 8 204 10 = СС 16 Для перевода чисел между системами с основанием 2, 8 или 16 используют замену двоичных цифр на их восьмеричные или шестнадцатеричные эквива- ленты. Замену производят на основе данных, представленных в табл. 7. Для перевода целого двоичного числа в восьмеричное сначала число разби- вают справа налево на группы по три цифры (триады), а затем каждой группе присваивают ее восьмеричный эквивалент. Аналогично поступают с шестнадцатеричным числом, которое разбивают на группы по четыре цифры (тетрады). Примеры перевода чисел из восьмеричной и шестнадцатеричной систем в двоичную и обратно показаны в табл. 8. 5 / 17 23 Таблица 6 Перевод дробного числа из десятичной системы счисления Целая часть Дробная часть 45 : 2 = 22 + 1 22 : 2 = 11 + 0 11 : 2 = 5 + 1 5 : 2 = 2 + 1 2 : 2 = 1 + 0 1 : 2 = 0 + 1 0,75 * 2 = 1, 5 = 1 + 0,5 0,5 * 2 = 1 + 0 45 10 = 101101 2 0,75 10 = 11 2 45,75 10 =101101,11 2 Таблица 7 Соответствие между целыми числами в разных системах счисления Dec q = 10 Bin q = 2 Oct q = 8 Hex q = 16 0 0000 0 0 1 0001 1 1 2 0010 2 2 3 0011 3 3 4 0100 4 4 5 0101 5 5 6 0110 6 6 7 0111 7 7 8 1000 10 8 9 1001 11 9 10 1010 12 A 11 1011 13 B 12 1100 14 C 13 1101 15 D 14 1110 16 E 15 1111 17 F 6 / 17 24 Таблица 8 Примеры перевода чисел с основанием q = 2, 8,16 Перевод числа 1325 8 в двоичную систему Восьмеричные цифры 1 3 2 5 Двоичные триады 001 011 010 101 Результат 1325 8 = 1011010101 2 Перевод числа 101010110 2 в восьмеричную систему Двоичные триады 000 101 010 110 Восьмеричные цифры 0 5 2 6 Результат 101010110 2 =526 8 Перевод числа 12BD 16 в двоичную систему Шестнадцатеричные цифры 1 2 B D Двоичные тетрады 0001 0010 1011 1101 Результат 12BD 16 = 1001010111101 2 Перевод числа 10001110101100 2 в шестнадцатеричную систему Двоичные тетрады 0010 0011 1010 1100 Шестнадцатеричные цифры 2 3 A C Результат 10001110101100 2 =23AC 16 Приведенные примеры показывают, что восьмеричную и шестнадцатерич- ную системы удобно использовать в качестве вспомогательных систем для пред- ставления двоичных чисел, в частности, для компактной записи двоичных кодов. Двоичная система занимает особое место среди позиционных систем, по- скольку является основной системой в вычислительной технике. Преимущество двоичной системы обеспечивается простотой технической реализации, так как технические элементы зачастую существуют в двух возможных состояниях. В качестве примеров можно привести противоположные состояния некого физи- ческого объекта: намагниченное или размагниченное, отражающее свет или по- глощающее, пропускающее электрический ток или не пропускающее. Каждому из двух возможных состояний элемента можно присвоить значения 0 и 1 и назвать этот технический элемент ячейкой, в которой можно хранить 1 бит данных. Если количество ячеек, в каждой из которых можно хранить 1 бит, увеличи- вать, то возможности по числу представляемых или кодируемых значений будут существенно вырастать. Одним битом могут быть выражены два значения: 0 или 1, двумя битами – 4 значения: 00, 01, 10, 11, тремя битами – 8 значений: 7 / 17 25 000, 001, 010, 100, 011, 101, 110, 111. Далее количество возможных значений вы- растает в геометрической прогрессии (табл. 9). Таблица 9 Возможности представления данных в системе двоичного кодирования Количество бит 1 2 3 4 5 6 7 8 Количество кодируе- мых значений 2 4 8 16 32 64 128 256 Математическая зако- номерность роста 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 В общем виде количество представляемых или кодируемых значений N мо- жет быть рассчитано по формуле 2 m N = , где m – число разрядов в системе двоичного кодирования. Из табл. 9 видно, что с помощью 1 байта, состоящего из 8 бит (m = 8), можно закодировать 256 значений. Если таблицу продолжить, то при m = 10 количество кодируемых значений N будет равно 1024. Двоичное кодирование целых чисел Кодирование целого числа осуществляют простым переводом этого числа в двоичную систему счисления. При этом возможны 3 формы записи двоичного числа: − прямой код – используют для положительных чисел и получают простым переводом числа в двоичный код; − обратный код – используют при кодировании отрицательных чисел, по- лучают инвертированием всех двоичных чисел прямого кода за исключением первой, указывающей знак числа; − дополнительный код – прибавляют единицу к значению обратного кода целого отрицательного числа. Обратный и дополнительный коды используются для представления отрица- тельных чисел, что позволяет заменить машинное вычитание на более быструю операцию сложения. Кроме формы записи большое значение имеет длина кода или количество разрядов в записи двоичного числа. При простом математиче- ском переводе длина кода равна количеству знаков в двоичной записи числа. Для записи полученного кода в вычислительной системе необходимо учитывать ограничения, связанные с машинным представлением. Например, при записи в 2-байтовой машинной системе любое число должно быть представлено не более чем 16 разрядами, а в 4-байтовой – 32 разрядами. Для примера рассмотрим представление числа 1607 в 2-байтовой (16-разрядной) машинной ячейке. Воспользуемся при этом равенством 1607 10 = 11001000111 2 . Ре- зультаты перевода и представления числа в ячейке памяти приведены в табл. 10. 8 / 17 26 Таблица 10 Перевод целого числа в двоичный машинный код Представление Число Десятичное 1607 Двоичное в прямом коде 11001000111 Машинное в 16-разрядном прямом коде 0000 0110 0100 0111 Обратный код 0111 1001 1011 1000 Дополнительный код 0111 1001 1011 1001 Для физического представления целого числа в ячейках памяти используется разрядная сетка. Число 1607, например, в 16-разрядной сетке представляется сле- дующим образом (табл. 11). Таблица 11 Разрядная сетка Номер разряда 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Значение разряда 0 0 0 0 0 1 1 0 0 1 0 0 0 1 1 1 Число заносится в разрядную сетку справа налево, при этом свободные раз- ряды заполняются нулями. В старшем разряде сетки представляются данные о знаке числа: ноль соответствует положительному значению, единица – отрица- тельному. Основной недостаток системы кодирования целых чисел – возможность пе- реполнения разрядной сетки для больших значений чисел. Двоичное кодирование действительных чисел Действительными или вещественными числами (в отличие от целых) называ- ются числа, имеющие дробную часть. Для кодирования действительного числа и сохранения его в памяти каждое число преобразуют следующим образом: − представляют число R как произведение мантиссы m (|m| < 1) на основание системы счисления q, возведенное в целую степень p (р называют порядком или характеристикой); для представления числа используют формулу p R m q = ⋅ ; − полученные значения мантиссы и порядка переводят в двоичный код; − двоичный код разбивают на группы, число разрядов в группе определяют равным четырем, восьми или десяти байтам. Такой способ записи чисел называется нормализованным, или представле- нием с плавающей точкой. Последовательность преобразования действитель- ного числа в двоичную форму показана в табл. 12. Из таблицы видно, как ука- занное число сохраняется в машинных ячейках. 9 / 17 27 Таблица 12 Перевод действительного числа в двоичный машинный код Представление Число Десятичное 12,34 Десятичное нормализованное 0,1234×10 2 Двоичное 10011010010 10 Двоичное в машинном коде 0000 0010 0000 0100 1101 0010 В разрядной сетке для действительного числа отводятся отдельные группы разрядов для мантиссы, порядка, знака числа и знака порядка. Структура разряд- ной сетки принимает при этом вид, показанный на рис. 5. Рис. 5. Структура разрядной сетки для записи действительного числа В представленной структуре можно менять соотношение между числом раз- рядов для записи порядка и мантиссы. Чем больше разрядов отводится под за- пись мантиссы, тем выше точность представления числа. Чем больше разрядов занимает порядок, тем шире диапазон представляемых чисел. Представление и обработка текстовых символов Первоначально вычислительные машины создавались исключительно для об- работки численных данных. По мере совершенствования вычислительной тех- ники числовые данные стали дополняться текстовыми комментариями, которые со временем преобразовались в электронные текстовые документы. С 80-х гг. прошлого века текстовые документы, созданные в электронной форме, стали ак- тивно вытеснять традиционные машинописные документы. С появлением ком- пьютеров новая технология создания текстовых документов окончательно закре- пилась и компьютеры стали широко использоваться для создания, обработки и хранения текстовых данных. порядок мантисса 10 / 17 28 Способы кодирования текста Компьютерное представление текста связано с системой его кодирования, по- этому для представления текста нужно знать систему кодирования и декодиро- вания текстовых символов. Кодировать языковую речь можно различными способами: письменно, же- стами или сигналами любой другой природы (светофор, телефонные звонки). Чаще всего кодированию подвергаются тексты на естественных языках. Для естественных языков существуют различные способы кодирования, остановимся на некоторых характерных и используемых на практике способах. 1. Графический способ – основан на использовании специальных рисунков или знаков. Пример графического кодирования описан в литературном произве- дении Артура Конана Дойла «Пляшущие человечки», где для шифрования сооб- щений использовалась последовательность пляшущих человеческих фигурок (рис. 6). Рис. 6. Таблица кодов «Пляшущие человечки» Пользуясь ключом к данному шифру, можно прочесть закодированную фразу: Другим примером графического кодирования является азбука Морзе, создан- ная американским изобретателем Самюэлем Морзе в 1837 г. для телеграфиче- ского кодирования сообщений. В азбуке Морзе каждая буква представлена ком- бинацией точек и тире (табл. 13). До настоящего времени в мореходной практике может использоваться сигнал бедствия SOS (…− − − …), несмотря на существо- вание автоматизированных систем оповещения о бедствии. 11 / 17 29 Таблица 13 Графические коды азбуки Морзе Аналоги букв латиницы и кириллицы, близкие по звучанию Аналоги букв лати- ницы и кириллицы, различные по звучанию Лат. Символ Морзе Кир. Лат. Символ Морзе Кир. Лат. Символ Морзе Кир. A • – А L • – • • Л Q – – • – Щ B – • • • Б M – – М V • • • – Ж C – • – • Ц N – • Н X – • • – Ь D – • • Д O – – – О Y – • – – Ы E • Е P • – – • П Нет аналогов F • • – • Ф R • – • Р – – – • Ч G – – • Г S • • • С – – – – Ш H • • • • Х T – Т • – – • – • Ъ I • • И U • • – У • • – • • Э J • – – – Й W • – – В • • – – Ю K – • – К Z – – • • З • – • – Я 2. Символьный способ– на основе символов (букв) того же алфавита, что и исходный текст. Способ используется в криптографии при создании шифрован- ных сообщений. Одним из первых применений способа является кодирование английского алфавита, предложенное в 1580 г. Фрэнсисом Бэконом [9]. Шифр Бэкона (табл. 14) выполнен на основе двоичного 5-разрядного кода, состоящего из букв А и В. Для создания сообщений на основе предложенной Бэконом си- стемы требуется двухсимвольный алфавит, при этом длина самого сообщения возрастает в 5 раз, поскольку каждая буква заменяется набором из 5 символов. Таблица 14 Кодирование английского алфавита a AAAAA g AABBA n ABBAA t BAABA b AAAAB h AABBB j ABBAB v BAABB c AAABA i ABAAA p ABBBA w BABAA d AAABB k ABAAB q ABBBB x BABAB e AABAA l ABABA r BAAAA y BABBA f AABAB m ABABB s BAAAB z BABBB 12 / 17 30 3. Числовой способ – основан на кодировании символов с помощью чисел. Широкое распространение способ получил в связи с созданием и развитием элек- тронно-вычислительных машин. В ЭВМ для кодирования букв используется два числа: 0 и 1. В отличие от шифра Бэкона, где достаточно 5-разрядного представ- ления, в компьютерной технике принято 8-разрядное, или 8-битовое, представ- ление символов. Последовательность из 8 бит образует 1 байт, байт используется для кодирования одного символа. С помощью одного байта путем смены после- довательности записи нулей и единиц можно закодировать 256 различных сим- волов. Кодирование компьютерных символов Система числового кодирования компьютерных символов принята на между- народном уровне и построена следующим образом. 1. Каждому символу, обозначенному на клавиатуре компьютера, присваива- ется двоичный восьмиразрядный код. Последовательность символов и их кодов формируется в кодировочную таблицу под названием ASCII (American Standard Code for Information Interchange) – американский стандартный код для обмена информацией. 2. В таблице ASCII все кодируемые символы делятся на две группы, в первую из которых (базовую) включается 128 символов (от 0 до 127) стандартного, или неизменяемого, кода, а во вторую (расширенную) – следующие 128 символов (от 128 до 255), которые относятся к расширяемой или изменяемой части кода (табл. 15). 3. В первой базовой группе кодируются буквы латинского алфавита, араб- ские цифры, математические знаки, знаки препинания и др. Кодировка первой группы символов является международной и обязательной для всех компьюте- ров, участвующих в процессе глобального обмена информацией. 4. Вторая группа из 128 символов предоставлена для кодирования националь- ных или специальных алфавитов, а также некоторых графических символов. Национальный алфавит русского языка (а также украинского, белорусского, бол- гарского) известен всему миру под названием кириллица. Таблица 15 Представление символов в кодовой таблице ASCII Базовая группа (0–127) Расширенная группа (128–255) Управляющие коды Национальные и специальные алфавиты; алфавиты в России, Украине, Белоруссии, Сербии, Болгарии – кириллица Латинский алфавит (26 букв) Арабские цифры Математические знаки Знаки препинания 13 / 17 31 С появлением компьютеров кириллица была закодирована на основе расши- ренной группы символов, исторически сложилось 6 способов кодировки кирил- лицы, различные версии кодировки появлялись одна за другой в процессе разви- тия компьютерной техники. Со временем некоторые кодировки исчезли из упо- требления, к действующим относятся 4 вида кодировок (табл. 16). Первые из трех приведенных в таблице кодировок выполнены в однобайто- вом формате, а кодировка Unicode, принятая в конце 1990-х, имеет 2-байтовый формат. Кодировка Unicode отличается от предыдущих версий широкими коли- чественными возможностями, поскольку число возможных вариантов кодирова- ния возрастает до 2 16 = 65536, но длина текстового сообщения увеличивается при этом в два раза. Расширенная кодировка может использоваться для представле- ния большинства языков на планете Земля, в том числе для кириллицы. Таблица 16 Виды кодировок кириллицы Наименова- ние Назначение СP 1251 для работы под операционной системой Windows KOИ8-Р для представления кириллических текстов в сети Интернет ISO-8859 для представления кириллических текстов в соответствии с международным стандартом Unicode для расширения возможностей по числу кодируемых симво- лов и алфавитов Наличие многих кодировок кириллицы может создавать трудности по пере- ходу из одной кодировки в другую. Для перехода между кодировками использу- ются специальные программы, которые называются текстовымиконверто- рами. Современные конверторы способны самостоятельно определять исходную кодировку текста, расшифровывать текст и представлять его на естественном языке. |