Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Перевод чисел из одной системы счисления в другуюСтр 1 из 5Следующая ⇒
Двоичная система счисления
В двоичной (binary) системе счисления всего две цифры, называемые двоичными (binary digits). Сокращение этого наименования привело к появлению термина бит, ставшего названием разряда двоичного числа. Веса разрядов в двоичной системе изменяются по степеням двойки. Поскольку вес каждого разряда умножается либо на 0, либо на 1, то в результате значение числа определяется как сумма соответствующих значений степеней двойки. Если какой-либо разряд двоичного числа равен 1, то он называется значащим разрядом. Запись числа в двоичном виде намного длиннее записи в десятичной системе счисления.
Арифметические действия, выполняемые в двоичной системе, подчиняются тем же правилам, что и в десятичной системе. Только в двоичной системе перенос единиц в старший разряд возникает чаще, чем в десятичной. Вот как выглядит таблица сложения в двоичной системе:
0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 10 (перенос в старший разряд)
Таблица умножения для двоичных чисел еще проще: 0 * 0 = 0 0 * 1 = 0 1 * 0 = 0 1 * 1 = 1
Пример выполнения операции сложения в двоичной системе счисления:
1 1 1 1 0 1 12 Красным цветом показан перенос из младших разрядов в + 1 1 02 старшие 1 0 0 0 12
Для проверки правильности выполнения операции переведем все три числа из двоичной системы в 10-ую:
1011 = 1*23 + 1*21 + 1 = 8 + 2 + 1 = 1110 3 2 1 0
110 = 1*22 + 1*21 = 4 + 2 = 610 2 1 0
10001 = 1*24 + 1 = 16 + 1 = 1710 4 3 2 1 0
Сумма первых двух чисел (11 и 6) равна третьему числу (17), следовательно операция выполнена верно. Обратите внимание на то, что при добавлении к числу, состоящему из единиц (11…1), еще одной единицы, получается число, равное 1 с количеством нулей, равным количеству единиц исходного числа, например: 1111 11112 + 1 = 1 0000 00002 = 28
Пример выполнения операции вычитания в двоичной системе счисления: Вычитание выполняется по тем же правилам, что и в 10-ой системе, но в 10-й системе при заеме единицы старшего разряда она превращается в 10 единиц младшего разряда, а в 2-й системе – в 2 единицы. Если нужно произвести заем не в соседнем разряде, а далее влево, то из каждых двух единиц текущего разряда одна остается в этом разряде, а вторая передается вправо. Сравните: 9 9 10 1 1 2 1 0 0 010 1 0 0 02 - 1 - 1 9 9 910 1 1 12
Выполним в 2-й системе счисление вычитание 1710 – 610 : 0 1 1 2 1 0 0 0 12 - 1 1 02 1 0 1 12 = 1110 Проверка показывает, что вычитание выполнено верно.
Если в двоичной системе счисления из числа, являющегося степенью двойки, вычесть 1, то получается число, состоящее из единиц, количество которых равно количеству нулей двоичного числа, например: 28 - 1 = 1 0000 00002 – 1 = 1111 11112 1023 = 1024 – 1 = 210 – 1 = 11 1111 11112
Пример выполнения операции умножения в двоичной системе счисления: 1 1 0 12 = 1310 * 1 0 12 = 510 1 1 0 1 +1 1 0 1 1 0 0 0 0 0 12 = 26 +1 = 64 +1 =6510 ( 13 * 5 = 65) 6 5 4 3 2 1 0
Рассмотрим подробнее, как процессор выполняет умножение двоичных чисел. Пусть надо умножить число 1101 на 101 (оба числа в двоичной системе счисления). Машина делает это следующим образом: она берет число 1101 и, если первый справа элемент второго множителя равен 1, то она заносит его в сумму. Затем сдвигает число 1101 влево на одну позицию, получая тем самым 11010, и, если, второй элемент второго множителя равен единице, то добавляет его к сумме. Если элемент второго множителя равен нулю, то сумма не изменяется. Этот процесс сдвигов и сложений повторяется. Пример выполнения операции деления в двоичной системе счисления:
Двоичное деление основано на методе, знакомом вам по десятичному делению, т. е. сводится к выполнению операций умножения и вычитания. Выполнение основной процедуры - выбор числа, кратного делителю и предназначенного для уменьшения делимого, здесь проще, так как таким числом могут быть только либо 0, либо сам делитель. В качестве примера разделим 14310 = 100011112 на 1310 = 11012
1 0 0 0 1 1 1 1 1 1 0 1 - 1 1 0 1 1 0 1 12 = 1110 1 0 0 1 1 - 1 1 0 1 1 1 0 1 - 1 1 0 1 0 Проверка показывает, что деление выполнено верно (143 / 13 = 11).
Умножение или деление двоичного числа на 2 приводит к перемещению запятой, отделяющей целую часть от дробной на один разряд соответственно вправо или влево: 10112 * 102 = 101102. 10112 / 102 = 101.12.
Ая система счисления
При наладке аппаратных средств ЭВМ или создании новой программы возникает необходимость " заглянуть внутрь" памяти машины, чтобы оценить ее текущее состояние. Но там все заполнено длинными последовательностями нулей и единиц двоичных чисел. Эти последовательности очень неудобны для восприятия человеком, привыкшим к более короткой записи десятичных чисел. Кроме того, естественные возможности человеческого мышления не позволяют оценить быстро и точно величину числа, представленного, например, комбинацией из 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. При записи отрицательных чисел перед последовательностью цифр ставят знак минус. Сложение, вычитание, умножение и деление чисел, представленных в восьмеричной системе, выполняются весьма просто, подобно тому, как это делают в общеизвестной десятичной системе счисления. Пример выполнения операции сложения в восьмеричной системе счисления: 1 1 Красным цветом показан перенос из младших разрядов в старшие. 4 7 6 Выполнение операции в каждом разряде: + 3 4 1) 6 + 4 = 10 = 1*8 + 2 = 128 5 3 2 2) 1 + 7 + 3 = 1*8 + 3 = 138 3) 1 + 4 = 5 Проверим результат путем перевода чисел в десятичную систему счисления: 4768 = 4*82 + 7*8 + 6 = 318 318 348 = 3*8 + 4 = 28 +28 532 = 5*82 + 3*8 + 2 = 346 346
Пример выполнения операции вычитания в восьмеричной системе счисления: 7 8 Красным цветом показан перенос из старших разрядов в младшие. 5 3 2 Выполнение операции в каждом разряде: - 3 4 1) 8 + 2 – 4 = 6 4 7 6 2) 7 + 2 - 3 = 1*8 + 3 = 138 3) 1 + 4 = 5 Пример выполнения операции умножения в восьмеричной системе счисления: 5 4 54 4*4 = 16 = 2*8 + 0 = 208 (записываем 0) * 3 4 * 4 2+ 5*4 = 22 = 2*8 + 6 = 268 2 6 0 260 + 2 0 4 2 3 2 0 54 4*3 = 12 = 1*8 + 4 = 148 (записываем 4) * 3 1 + 5*3 = 16 = 2*8 + 0 = 208 Выполним проверку: 548 = 5*8 + 4 = 4410 44 348 = 3*8 + 4 = 2810 * 28 23208 = 2*83 + 3*82 + 2*8 = 123210 352 + 88 = 123210 Пример выполнения операции деления в восьмеричной системе счисления:
2 3 2 08 5 48 - 2 0 4 3 48 2 6 0 - 2 6 0 Деление в восьмеричной системе близко делению в десятичной системе: нужно подобрать цифры частного. 232 делим на 54, в десятичной системе мы получили бы целое частное 4, но из предидущего примера мы знаем, что в восьмеричной системе 54*4 = 260, это много, попробуем взять цифру поменьше – 3, умножаем 54*3 = 204, эта цифра подходит, и т.д.
В различных языках программирования запись восьмеричных чисел начинается с 0, например, запись 011 означает десятичное число 9. Ая система счисления
В шестнадцатеричной (hexadecimal) системе счисления применяются десять цифр от 0 до 9 и шесть первых букв латинского алфавита: 10 – A 11 – B 12 – C 13 – D 14 – E 15 – F. При записи отрицательных чисел слева от последовательности цифр ставят знак минус. Для того чтобы при написании компьютерных программ отличить числа, записанные в шестнадцатеричной системе, от других, перед числом ставят 0x. То есть 0x11 и 11 - это разные числа. Шестнадцатеричная система счисления широко используется при задании различных оттенков цвета при кодировании графической информации (модель RGB). Так, в редакторе гипертекста Netscape Composer можно задавать цвета для фона или текста как в десятичной, так и шестнадцатеричной системах счисления (см. рисунок).
Пример выполнения операции сложения в 16-ой системе счисления: 1 1 Красным цветом показан перенос из младших разрядов A 7 B16 Выполнение операции в каждом разряде: + C 816 B + 8 = 11 + 8 = 19 = 1*16 + 3 = 1316 (записываем 3) B 4 316 1+7+С = 8+12 = 20 = 1*16 + 4 = 1416 (записываем 4) 1 + A = B Проверим резульат путем перевода чисел в 10-ю систему: A7B16 = 10*162 + 7*16 +11 = 2683 2 1 0 2683 C816 = 12*16 + 8 = 200 + 200 1 0 2883 B4316 = 11*162 + 4*16 +3 = 2883 2 1 0
Пример выполнения операции вычитания в 16-ой системе счисления:
15 16 Красным цветом показан заем из старших разрядов B 4 316 Выполнение операции в каждом разряде: - A 7 B16 16 + 3 – B = 19 -11 = 8 C 816 15 + 4 – 7 = 12 = C B - 1 – A = 0
Умножение и деление в 16-ой системе обычно не выполняется ввиду сложности вычислений. Примеры двоичного кодирования информации
Среди всего разнообразия информации, обрабатываемой на компьютере, значительную часть составляют числовая, текстовая, графическая и аудиоинформация. Познакомимся с некоторыми способами кодирования этих типов информации в ЭВМ. Кодирование чисел
Существуют два основных формата представления чисел в памяти компьютера. Один из них используется для кодирования целых чисел, второй (так называемое представление числа в формате с плавающей точкой) используется для задания некоторого подмножества действительных чисел. Кодирование целых чисел Множество целых чисел, представимых в памяти ЭВМ, ограничено. Диапазон значений зависит от размера области памяти, используемой для размещения чисел. В k-разрядной ячейке может храниться 2k различных значений целых чисел. Целые числа могут занимать 1, 2, 4 или 8 байт (для 64-разрядных машин). Чтобы получить внутреннее представление целого положительного числа N, хранящегося в k-разрядном машинном слове, необходимо:
1. перевести число N в двоичную систему счисления; 2. полученный результат дополнить слева незначащими нулями до k разрядов. Код целого числа может рассматриваться как двоичное число со знаком или без знака. При беззнаковом представлении все разряды используются для записи значения числа. Пример: Число 107 = 11010112 будет записано: в 1 байт как 01101011 в 2 байта как 00000000 01101011 1-й байт 0-й байт в 4 байта как 00000000 00000000 00000000 01101011 3-й байт 2-й байт 1-й байт 0-й байт
Минимальное беззнаковое число равно 0. Максимальное беззнаковое число равно 2n – 1, где n – кол-во двоичных разрядов, используемых для записи числа. Например для 2-хбайтового представления max =11111111 111111112 =
Для записи чисел со знаком старший (левый) разряд отводится под знак числа. Если число неотрицательное, то в знаковый разряд записывается 0, в противном случае – 1, т.е. единица в знаковом разряде означает знак “минус”. Целые числа со знаком могут быть записаны в прямом, обратном и дополнительном коде. В прямом коде число хранится в виде: знак+абсолютное значение (модуль) числа. В обратном коде в значении числа нули заменяют на единицы, а единицы на нули. Дополнительный код получают путем прибавления 1 к обратному. Обратный и дополнительный код неотрицательных чисел совпадает с прямым. Обратный и дополнительный коды чисел позволяют заменить операцию вычитания сложением с отрицательным числом, что существенно упрощает устройство процессора. Варианты арифметических операций будут рассмотрены ниже. Пример. Рассмотрим внутреннее представление целого отрицательного числа: -6 = 1102. Однобайтовое: Прямой код: 1000 0110 Обратный код: 1111 1001 Дополнительный: 1111 1001 + 1 1111 1010 Четырехбайтовое: Прямой код: 10000000 00000000 00000000 00000110 Обратный код: 1111111 1111111 11111111 11111001 Дополнительный: 1111111 1111111 11111111 11111001 + 1 1111111 1111111 11111111 11111010
Для того, чтобы получить значение отрицательного числа, записанного в дополнительном коде, можно использовать один из двух алгоритмов: 1) вычесть 1 из дополнительного кода (получаем обратный код) и заменить все нули на единицы, а единицы на нули; 2) сначала заменить все нули на единицы, единицы на нули, затем прибавить единицу к результату. Пример: возьмем однобайтовый доп. код: 1111 1010 и используем второй алгоритм: 1111 1010 -- > - (0000 0101 + 1) = - 1102 = -6. Случаи переполнения Для обнаружения переполнения разрядной сетки знаковый разряд дублируется. Такое представление чисел называется модифицированным дополнительным кодом: 1) 65 00 100 0001 + 97+ 00 110 0001 162 01 010 0010 Разные цифры в знаковых разрядах свидетельствуют о том, что произошло переполнение. 2) -65 11 011 1111 + -97+ 11 001 1111 -162 10 101 1110 Переполнение! Для проверки знаковых разрядов используют результат операции “исключающее ИЛИ”, которая дает значение 1 только если операнды различны. Сравнение рассмотренных форм кодирования целых чисел со знаком показывает: на преобразование отрицательного числа в обратный код компьютер затрачивает меньше времени, чем на преобразование в дополнительный код, так как последнее состоит из двух шагов — образования обратного кода и прибавления единицы к его младшему разряду; время выполнения сложения для дополнительных кодов чисел меньше, чем для их обратных кодов, потому что в таком сложении нет переноса единицы из знакового разряда в младший разряд результата, поэтому для ускорения выполнения расчетов используют дополнительный код.
Умножение и деление Во многих компьютерах умножение производится как последовательность сложений и сдвигов. Для этого в АЛУ имеется регистр, называемый накапливающим сумматором, который до начала выполнения операции содержит число ноль. В процессе выполнения операции в нем поочередно размещаются множимое и результаты промежуточных сложений, а по завершении операции — окончательный результат. Другой регистр АЛУ, участвующий в выполнении этой операции, вначале содержит множитель. Затем по мере выполнения сложений содержащееся в нем число уменьшается, пока не достигнет нулевого значения. Для иллюстрации умножим 1100112 на 1011012.
Деление для компьютера является трудной операцией. Обычно оно реализуется путем многократного прибавления к делимому дополнительного кода делителя.
Стандарт IEEE 754 Рекомендуемый для всех ВМ формат представления чисел с плавающей запятой определен стандартом IEEE 754. Этот стандарт был разработан с целью облегчить перенос программ с одного процессора на другие и нашел широкое применение практически во всех процессорах и арифметических сопроцессорах. Рис. 2.24. Основные форматы IEEE 754: а — одинарный; б — двойной Стандарт определяет 32-битовый (одинарный) и 64-битовый (двойной) форматы (рис. 2.24) с 8- и 11-разрядным порядком соответственно. Самый левый бит хранит знак числа. Основанием системы счисления является 2. Смещение равно соответственно 127 и 1023. Максимальный порядок, который может иметь число: 127 и 1023. Для повышения точности представления мантиссы используют прием скрытой единицы: поскольку в нормализованной мантиссе старшая цифра всегда равна 1, ее можно не хранить. Следовательно, при 4-хбайтовом представлении, мантисса фактически состоит из 24 разрядов. Скрытая единица при выполнении арифметических операций восстанавливается, а при записи результата удаляется.
Пример: рассмотрим 4-хбайтовый код числа 20.5: 20.5 = 10100.12 = 0.101001 * 25 Порядок (смещенный): 5+127 = 132 = 1000 01002 Мантисса: 101001 à 010010…0 (первая единица – скрытая, в конец мантиссы добавляются нули).
4-хбайтовое представление:
порядок мантисса
В 16-ом виде этот код будет выглядеть так: 42240000.
Определим максимальное число и его точность при 4-хбайтовом представлении. Максимальное число: .1…1 * 2127 = 1 * 2127 = 1.7 * 1038 Максимальное значение мантиссы: 1…1 (24 единицы) = 224 – 1 = 210*2.4 = 10242.4 = 1.7*107, следовательно точность представления мантиссы 7-8 значащих цифр. Преимущества и недостатки Преимущества · Упрощён вывод чисел на индикацию — вместо последовательного деления на 10 требуется просто вывести на индикацию каждый полубайт. Аналогично, проще ввод данных с цифровой клавиатуры. · Для дробных чисел (как с фиксированной, так и с плавающей запятой) при переводе в человекочитаемый десятичный формат и наоборот не теряется точность. · Упрощены умножение и деление на 10, а также округление. По этим причинам двоично-десятичный формат применяется в калькуляторах — калькулятор в простейших арифметических операциях должен выводить в точности такой же результат, какой подсчитает человек на бумаге. Недостатки
Запрещённые в BCD битовые комбинации: 1010 1011 1100 1101 1110 1111
Пример операции сложения двоично-десятичных чисел: Требуется: Найти число A = D + C, где D = 3927, C = 4856 Решение: Представим числа D и C в двоично-десятичной форме: D = 3927 = 0011 1001 0010 0111 C = 4856 = 0100 1000 0101 0110 Суммируем числа D и С по правилам двоичной арифметики: * ** 0011 1001 0010 0111+ 0100 1000 0101 0110 ___________________= 1000 0001 0111 1101 - Двоичная сумма+ 0110 0110 - Коррекция ___________________ 1000 0111 1000 0011 '*' — тетрада, из которой был перенос в старшую тетраду '**' — тетрада с запрещённой комбинацией битов В тетраду, помеченую символом *, добавляем шестёрку т.к по правилам двоичной арифметики перенос унёс с coбой 16, а по правилам десятичной арифметики должен был унести 10. В тетраду, помеченую символом **, добавляем шестёрку, так как комбинация битов 1101 (что соответствует десятичному числу 13) является запрещённой.
Двоичная система счисления
В двоичной (binary) системе счисления всего две цифры, называемые двоичными (binary digits). Сокращение этого наименования привело к появлению термина бит, ставшего названием разряда двоичного числа. Веса разрядов в двоичной системе изменяются по степеням двойки. Поскольку вес каждого разряда умножается либо на 0, либо на 1, то в результате значение числа определяется как сумма соответствующих значений степеней двойки. Если какой-либо разряд двоичного числа равен 1, то он называется значащим разрядом. Запись числа в двоичном виде намного длиннее записи в десятичной системе счисления.
Арифметические действия, выполняемые в двоичной системе, подчиняются тем же правилам, что и в десятичной системе. Только в двоичной системе перенос единиц в старший разряд возникает чаще, чем в десятичной. Вот как выглядит таблица сложения в двоичной системе:
0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 10 (перенос в старший разряд)
Таблица умножения для двоичных чисел еще проще: 0 * 0 = 0 0 * 1 = 0 1 * 0 = 0 1 * 1 = 1
Пример выполнения операции сложения в двоичной системе счисления:
1 1 1 1 0 1 12 Красным цветом показан перенос из младших разрядов в + 1 1 02 старшие 1 0 0 0 12
Для проверки правильности выполнения операции переведем все три числа из двоичной системы в 10-ую:
1011 = 1*23 + 1*21 + 1 = 8 + 2 + 1 = 1110 3 2 1 0
110 = 1*22 + 1*21 = 4 + 2 = 610 2 1 0
10001 = 1*24 + 1 = 16 + 1 = 1710 4 3 2 1 0
Сумма первых двух чисел (11 и 6) равна третьему числу (17), следовательно операция выполнена верно. Обратите внимание на то, что при добавлении к числу, состоящему из единиц (11…1), еще одной единицы, получается число, равное 1 с количеством нулей, равным количеству единиц исходного числа, например: 1111 11112 + 1 = 1 0000 00002 = 28
Пример выполнения операции вычитания в двоичной системе счисления: Вычитание выполняется по тем же правилам, что и в 10-ой системе, но в 10-й системе при заеме единицы старшего разряда она превращается в 10 единиц младшего разряда, а в 2-й системе – в 2 единицы. Если нужно произвести заем не в соседнем разряде, а далее влево, то из каждых двух единиц текущего разряда одна остается в этом разряде, а вторая передается вправо. Сравните: 9 9 10 1 1 2 1 0 0 010 1 0 0 02 - 1 - 1 9 9 910 1 1 12
Выполним в 2-й системе счисление вычитание 1710 – 610 : 0 1 1 2 1 0 0 0 12 - 1 1 02 1 0 1 12 = 1110 Проверка показывает, что вычитание выполнено верно.
Если в двоичной системе счисления из числа, являющегося степенью двойки, вычесть 1, то получается число, состоящее из единиц, количество которых равно количеству нулей двоичного числа, например: 28 - 1 = 1 0000 00002 – 1 = 1111 11112 1023 = 1024 – 1 = 210 – 1 = 11 1111 11112
Пример выполнения операции умножения в двоичной системе счисления: 1 1 0 12 = 1310 * 1 0 12 = 510 1 1 0 1 +1 1 0 1 1 0 0 0 0 0 12 = 26 +1 = 64 +1 =6510 ( 13 * 5 = 65) 6 5 4 3 2 1 0
Рассмотрим подробнее, как процессор выполняет умножение двоичных чисел. Пусть надо умножить число 1101 на 101 (оба числа в двоичной системе счисления). Машина делает это следующим образом: она берет число 1101 и, если первый справа элемент второго множителя равен 1, то она заносит его в сумму. Затем сдвигает число 1101 влево на одну позицию, получая тем самым 11010, и, если, второй элемент второго множителя равен единице, то добавляет его к сумме. Если элемент второго множителя равен нулю, то сумма не изменяется. Этот процесс сдвигов и сложений повторяется. Пример выполнения операции деления в двоичной системе счисления:
Двоичное деление основано на методе, знакомом вам по десятичному делению, т. е. сводится к выполнению операций умножения и вычитания. Выполнение основной процедуры - выбор числа, кратного делителю и предназначенного для уменьшения делимого, здесь проще, так как таким числом могут быть только либо 0, либо сам делитель. В качестве примера разделим 14310 = 100011112 на 1310 = 11012
1 0 0 0 1 1 1 1 1 1 0 1 - 1 1 0 1 1 0 1 12 = 1110 1 0 0 1 1 - 1 1 0 1 1 1 0 1 - 1 1 0 1 0 Проверка показывает, что деление выполнено верно (143 / 13 = 11).
Умножение или деление двоичного числа на 2 приводит к перемещению запятой, отделяющей целую часть от дробной на один разряд соответственно вправо или влево: 10112 * 102 = 101102. 10112 / 102 = 101.12.
Ая система счисления
При наладке аппаратных средств ЭВМ или создании новой программы возникает необходимость " заглянуть внутрь" памяти машины, чтобы оценить ее текущее состояние. Но там все заполнено длинными последовательностями нулей и единиц двоичных чисел. Эти последовательности очень неудобны для восприятия человеком, привыкшим к более короткой записи десятичных чисел. Кроме того, естественные возможности человеческого мышления не позволяют оценить быстро и точно величину числа, представленного, например, комбинацией из 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. При записи отрицательных чисел перед последовательностью цифр ставят знак минус. Сложение, вычитание, умножение и деление чисел, представленных в восьмеричной системе, выполняются весьма просто, подобно тому, как это делают в общеизвестной десятичной системе счисления. Пример выполнения операции сложения в восьмеричной системе счисления: 1 1 Красным цветом показан перенос из младших разрядов в старшие. 4 7 6 Выполнение операции в каждом разряде: + 3 4 1) 6 + 4 = 10 = 1*8 + 2 = 128 5 3 2 2) 1 + 7 + 3 = 1*8 + 3 = 138 3) 1 + 4 = 5 Проверим результат путем перевода чисел в десятичную систему счисления: 4768 = 4*82 + 7*8 + 6 = 318 318 348 = 3*8 + 4 = 28 +28 532 = 5*82 + 3*8 + 2 = 346 346
Пример выполнения операции вычитания в восьмеричной системе счисления: 7 8 Красным цветом показан перенос из старших разрядов в младшие. 5 3 2 Выполнение операции в каждом разряде: - 3 4 1) 8 + 2 – 4 = 6 4 7 6 2) 7 + 2 - 3 = 1*8 + 3 = 138 3) 1 + 4 = 5 Пример выполнения операции умножения в восьмеричной системе счисления: 5 4 54 4*4 = 16 = 2*8 + 0 = 208 (записываем 0) * 3 4 * 4 2+ 5*4 = 22 = 2*8 + 6 = 268 2 6 0 260 + 2 0 4 2 3 2 0 54 4*3 = 12 = 1*8 + 4 = 148 (записываем 4) * 3 1 + 5*3 = 16 = 2*8 + 0 = 208 Выполним проверку: 548 = 5*8 + 4 = 4410 44 348 = 3*8 + 4 = 2810 * 28 23208 = 2*83 + 3*82 + 2*8 = 123210 352 + 88 = 123210 Пример выполнения операции деления в восьмеричной системе счисления:
2 3 2 08 5 48 - 2 0 4 3 48 2 6 0 - 2 6 0 Деление в восьмеричной системе близко делению в десятичной системе: нужно подобрать цифры частного. 232 делим на 54, в десятичной системе мы получили бы целое частное 4, но из предидущего примера мы знаем, что в восьмеричной системе 54*4 = 260, это много, попробуем взять цифру поменьше – 3, умножаем 54*3 = 204, эта цифра подходит, и т.д.
В различных языках программирования запись восьмеричных чисел начинается с 0, например, запись 011 означает десятичное число 9. Ая система счисления
В шестнадцатеричной (hexadecimal) системе счисления применяются десять цифр от 0 до 9 и шесть первых букв латинского алфавита: 10 – A 11 – B 12 – C 13 – D 14 – E 15 – F. При записи отрицательных чисел слева от последовательности цифр ставят знак минус. Для того чтобы при написании компьютерных программ отличить числа, записанные в шестнадцатеричной системе, от других, перед числом ставят 0x. То есть 0x11 и 11 - это разные числа. Шестнадцатеричная система счисления широко используется при задании различных оттенков цвета при кодировании графической информации (модель RGB). Так, в редакторе гипертекста Netscape Composer можно задавать цвета для фона или текста как в десятичной, так и шестнадцатеричной системах счисления (см. рисунок).
Пример выполнения операции сложения в 16-ой системе счисления: 1 1 Красным цветом показан перенос из младших разрядов A 7 B16 Выполнение операции в каждом разряде: + C 816 B + 8 = 11 + 8 = 19 = 1*16 + 3 = 1316 (записываем 3) B 4 316 1+7+С = 8+12 = 20 = 1*16 + 4 = 1416 (записываем 4) 1 + A = B Проверим резульат путем перевода чисел в 10-ю систему: A7B16 = 10*162 + 7*16 +11 = 2683 2 1 0 2683 C816 = 12*16 + 8 = 200 + 200 1 0 2883 B4316 = 11*162 + 4*16 +3 = 2883 2 1 0
Пример выполнения операции вычитания в 16-ой системе счисления:
15 16 Красным цветом показан заем из старших разрядов B 4 316 Выполнение операции в каждом разряде: - A 7 B16 16 + 3 – B = 19 -11 = 8 C 816 15 + 4 – 7 = 12 = C B - 1 – A = 0
Умножение и деление в 16-ой системе обычно не выполняется ввиду сложности вычислений. Перевод чисел из одной системы счисления в другую Перевод числа из системы счисления с основанием q в 10-ю систему счисления выполняется путем вычисления значения многочлена по степеням q, коэффициенты которого равны цифрам числа. Рассмотрим различные способы перевода чисел из одной системы счисления в другую на конкретных примерах. Популярное:
|
Последнее изменение этой страницы: 2016-07-12; Просмотров: 1163; Нарушение авторского права страницы