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

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

Вспомним нашу привычную десятичную систему счисления , в которой мы с детства производим все расчеты. Уже в начальной школе мы привыкли к терминам "единицы", "десятки", "сотни", "тысячи", "десятые", "сотые", "тысячные" и не задумываемся над тем, что они означают вес разряда, выраженный в виде числа, равного , где - целое число . Например, число 125, 46 можно представить в виде суммы:

сотни десятки единицы десятые доли сотые доли

Аналогично любое число в десятичной системе счисления можно представить в виде подобной суммы:

(11.1)

где - количество знаков в целой части числа, - количество знаков в дробной части числа, - вес -го разряда, - весовой коэффициент для -го разряда числа. Количество возможных вариантов значения коэффициента в десятичной системе счисления равно , поскольку для записи чисел в ней используются десять знаков - арабские цифры "0", "1", "2", "3", "4", "5", "6", "7", "8" и "9". Число является основанием системы счисления. Исторически сложилось, что десятичная система получила наибольшее распространение, хотя по этому принципу можно сделать аналогичную запись в любой другой системе счисления c любым другим основанием. В табл. 11.1 прослежива ется аналогия между позиционными системами счисления.

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

Для числа в системе счисления с основанием выражение (11.1) преобразуется к виду:

(11.2)
Таблица 11.1. Параметры позиционных систем счисления
Название системы счисления Основание системы счисления Знаки, использующиеся для записи чисел
Двоичная 2 0, 1
Троичная 3 0, 1, 2
Четверичная 4 0, 1, 2, 3
Восьмеричная 8 0, 1, 2, 3, 4, 5, 6, 7
Десятичная 10 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Шестнадцатеричная 16 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F

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

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

Приведем примеры записи чисел в указанных системах и найдем их десятичные эквиваленты по формуле (11.2).

Для восьмеричного числа:

Для шестнадцатеричного числа:

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

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

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

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

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

Проверка перевода осуществляется по формуле (11.2), так, как это показано ниже на примерах.

Пример. Перевести десятичное число 125 в двоичную, восьмеричную и шестнадцатеричную системы счисления. Проверить результаты по формуле (П11.2).


a) б) в)

Проверка:

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

Перевод из двоичной системы в шестнадцатеричную (восьмеричную)

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

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

Таблица 11.2. Соответствие двоичных групп, шестнадцатеричных и восьмеричных знаков
Двоичная группа Шестнадцатеричный знак Десятичный эквивалент Двоичная группа Восьмеричный знак
0000 0 0 000 0
0001 1 1 001 1
0010 2 2 010 2
0011 3 3 011 3
0100 4 4 100 4
0101 5 5 101 5
0110 6 6 110 6
0111 7 7 111 7
1000 8 8
1001 9 9
1010 A 10
1011 B 11
1100 C 12
1101 D 13
1110 E 14
1111 F 15

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

Рис. 2.1. Классификация чисел


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

Все системы счисления делятся на два вида: позиционные и непозиционные. В позиционных системах счисления значение цифры зависит от ее положения в числе, в непозиционных – не зависит. Самой распространенной из непозиционных систем является римская. В качестве цифр в римской системе используются следующие символы: I (1), V (5), X (10), L (50), С (100), D (500), М (1000). Значение цифры в этой системе не зависит от ее положения в числе. Величина числа в римской системе определяется как сумма и разность цифр в числе. Если меньшая цифра стоит слева от большей, то она вычитается, если справа – прибавляется.



Рис. 2.2. Диалоговое окно «Мастер функций – шаг 1 из 2»


Например, число 1997 (десятичная позиционная система счисления) в римской системе счисления будет выглядеть следующим образом: MCMXCVII = 1000 + (1000 – 100) + (100 – 10) + 5 + 1 + 1. Для автоматизации процесса перевода данного числа из десятичной в римскую систему счисления воспользуемся табличным процессором MS Excel.



Рис. 2.3. Диалоговое окно «Аргументы функции»


В результате этих действий получаем в ячейке А1 искомое значение числа 1997 в римской системе счисления (рис. 2.4).



Рис. 2.4. Лист MS Excel «Результат преобразований»


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

или в рекуррентной форме:

где K – представляемое число; h – основание системы счисления; а – разрядный коэффициент, а = 0, 1, 2, 3…, h-1 , т. е. цифры, принадлежащие алфавиту данной системы счисления; i – номер разряда, позиция; п – число целых разрядов числа; т – число дробных разрядов числа.

В десятичной системе счисления формула (2.2) может быть записана следующим образом:

где а = 0, 1, 2, 3…, 9.

Например, число 827 десятичной системы счисления в соответствии с выражением (2.3) можно представить в виде: 827 = 8 · 10 2 + 2 · 10 1 + 7 · 10 0 .

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

где а = 0, 1.

Например, число 1100111011 2 двоичной системы счисления в соответствии с формулой (2.4) можно представить в виде: 1 · 2 9 + 1 · 2 8 + 0 · 2 7 + 0 · 2 6 + 1 · 2 5 + 1 · 2 4 + 1 · 2 3 + 0 · 2 2 + 1 · 2 1 + 1 · 2 0 .

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

Соотношение (2.2) для восьмеричной и шестнадцатеричной системы счисления соответственно примет вид (2.5) и (2.6) :

где а = 0, 1, 2, 3…, 7.

Например, число 1473 8 восьмеричной системы счисления в соответствии с (2.5) примет вид: 1 · 8 3 + 4 · 8 2 + 7 · 8 1 + 3 · 8 0 .

где а = 0, 1, 2, 3…, 9, A, B, C, D, E, F.

В шестнадцатеричной системе счисления используется шестнадцать цифр, из которых десять цифр арабские (0, 1, 2, 3, 4, 5, 6, 7, 8, 9), а остальные цифры (10, 11, 12, 13, 14, 15) обозначаются буквами латинского алфавита (А = 10, В = 11, С = 12, D = 13, E = 14, F = 15).

Например, число 33B 16 шестнадцатеричной системы счисления, в соответствии с (2.6) примет вид: 3 · 16 2 + 3 · 16 1 + В · 16 0 (В = 11).

При операциях с числами, представленными в различных системах счисления, необходимо указывать систему счисления числа, используя нижний индекс, например: 827 10 – число 827 в десятичной системе; 1100111011 2 – число 1100111011 в двоичной системе; 1473 8 – число 1473 в восьмеричной системе; 33B 16 – число 33В в шестнадцатеричной системе счисления.

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



Преобразование чисел, представленных в десятичной системе счисления, в двоичную, восьмеричную и шестнадцатеричную системы счисления – более сложная процедура, которая может осуществляться различными способами: деления, умножения, вычитания и т. д. При этом необходимо учитывать, что способы перевода целых десятичных чисел и правильных дробей будут различаться. Для перевода целого десятичного числа, например 53 10 , в двоичную систему можно использовать способ деления, а десятичной правильной дроби, например 0,75 10 , в двоичную систему – способ умножения. Результаты действий отобразим в соответствующих табл. 2.1 и 2.2.

Таблица 2.1

Таким образом, 53 10 = 110101 2 .


Таблица 2.2

Таким образом, 0,75 10 = 0,11 2 .


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

Преобразуем число AF 16 с помощью компьютерного калькулятора в двоичную, восьмеричную и десятичную системы счисления. Запустим программу Калькулятор с помощью команды: [Кнопка Пуск – Программы – Стандартные – Калькулятор]. После запуска программ выполним команду: [Вид – Инженерный]. У калькулятора имеется четыре опционные кнопки, расположенные слева вверху под индикатором вывода результата вычислений. При активизации кнопки Hex осуществляется преобразование числа, отображаемого в поле ввода, и результата вычислений калькулятора в шестнадцатеричную систему счисления, Dec – в десятичную, Oct – в восьмеричную, Bin – в двоичную систему счисления. Активизируем кнопку Hex и введем число АF 16 . Последовательно переключая кнопки Bin , Oct и Dec , получим следующие результаты: АF 16 = 10101111 2 = 257 8 = 175 10 . На рис. 2.5 показан результат преобразования числа AF 16 в число 257 8 .



Рис. 2.5. Программа «Калькулятор»


Последовательность действий при преобразовании шестнадцатеричного числа AF 16 в двоичную, восьмеричную и десятичную системы счисления с помощью программы MS Excel аналогична преобразованию числа 1997 в римскую систему счисления, но здесь необходимо учесть, что вместо функции «Римское» необходимо использовать функции «ШЕСТН.В.ДВ», «ШЕСТН.В.ВОСЬМ», «ШЕСТН.В.ДЕС» категории «Инженерные» (см. рис. 2.2).

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

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

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

При сложении двух единиц происходит переполнение разряда и производится перенос единицы в старший разряд, при вычитании 0–1 производится заем из старшего разряда, в таблице «Вычитание» этот заем обозначен 1 с чертой над цифрой.



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



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

2.3. Представление чисел в компьютере

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

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

Максимальное значение целого неотрицательного числа, которое может храниться в регистре в формате с фиксированной запятой, можно определить из формулы: 2 n – 1, где п – число разрядов числа. Максимальное число при этом будет равно 2 8 – 1 = 255 10 = 11111111 2 и минимальное 0 10 = 00000000 2 . Таким образом, диапазон изменения целых неотрицательных чисел будет находиться в пределах от 0 до 255 10 .

В отличие от десятичной системы в двоичной системе счисления при компьютерном представлении двоичного числа отсутствуют символы, обозначающие знак числа: положительный (+) или отрицательный (-), поэтому для представления целых чисел со знаком в двоичной системе используются два формата представления числа: формат значения числа со знаком и формат дополнительного кода. В первом случае для хранения целых чисел со знаком отводится два регистра памяти (16 бит), причем старший разряд (крайний слева) используется под знак числа: если число положительное, то в знаковый разряд записывается 0, если число отрицательное, то – 1. Например, число 536 10 = 0000001000011000 2 будет представлено в регистрах памяти в следующем виде:

а отрицательное число -536 10 = 1000001000011000 2 в виде:

Максимальное положительное число или минимальное отрицательное в формате значения числа со знаком (с учетом представления одного разряда под знак) равно 2 n-1 – 1 = 2 16- 1 – 1 = 2 15 – 1 = 32767 10 = 111111111111111 2 и диапазон чисел будет находиться в пределах от -32767 10 до 32767.

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

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

1) модуль числа записать прямым кодом в п (п = 16) двоичных разрядах;

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

3) к полученному обратному коду прибавить единицу к младшему разряду.

Например, для числа -536 10 в таком формате модуль будет равен 0000001000011000 2 , обратный код – 1111110111100111, а дополнительный код – 1111110111101000. Проверим полученное значение дополнительного кода с помощью калькулятора. Для этого введем значение модуля числа -536 10 , т. е. число 536 10 , и с помощью опционной кнопки Bin преобразуем это число, представленное в десятичной системе счисления, в двоичную систему, предварительно установив опционную кнопку 2 байта. Нажав кнопку Not калькулятора, получим обратный код числа, а прибавив к обратному коду двоичную единицу, – дополнительный код. Окончательный результат получим в поле окна программы Калькулятор (рис. 2.6). Можно поступить еще проще: набрав на калькуляторе число -536 10 и активизировав кнопку Bin , получить дополнительной код этого числа в двоичной системе счисления.



Рис. 2.6. Результат получения дополнительного кода


Необходимо помнить, что дополнительный код положительного числа – само число.

Для хранения целых чисел со знаком помимо 16-разрядного компьютерного представления, когда используются два регистра памяти (такой формат числа называется также форматом коротких целых чисел со знаком), применяются форматы средних и длинных целых чисел со знаком. Для представления чисел в формате средних чисел используется четыре регистра (4 х 8 = 32 бит), а для представления чисел в формате длинных чисел – восемь регистров (8 х 8 = 64 бита). Диапазоны значений для формата средних и длинных чисел будут соответственно равны: -(2 31 – 1) … + 2 31 – 1 и -(2 63 -1) … + 2 63 – 1.

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

Вещественные числа (конечные и бесконечные десятичные дроби) обрабатываются и хранятся в компьютере в формате с плавающей запятой. При таком формате представления числа положение запятой в записи может изменяться. Любое вещественное число Къ формате с плавающей запятой может быть представлено в виде:

где А – мантисса числа; h – основание системы счисления; р – порядок числа.

Выражение (2.7) для десятичной системы счисления примет вид:

для двоичной -

для восьмеричной -

для шестнадцатеричной -

Такая форма представления числа также называется нормальной. С изменением порядка запятая в числе смещается, т. е. как бы плавает влево или вправо. Поэтому нормальную форму представления чисел называют формой с плавающей запятой. Десятичное число 15,5, например, в формате с плавающей запятой может быть представлено в виде: 0,155 · 10 2 ; 1,55 · 10 1 ; 15,5 · 10 0 ; 155,0 · 10 -1 ; 1550,0 · 10 -2 и т. д. Эта форма записи десятичного числа 15,5 с плавающей запятой не используется при написании компьютерных программ и вводе их в компьютер (устройства ввода компьютеров воспринимают только линейную запись данных). Исходя из этого выражение (2.7) для представления десятичных чисел и ввода их в компьютер преобразовывают к виду

где Р – порядок числа,

т. е. вместо основания системы счисления 10 пишут букву Е, вместо запятой – точку, и знак умножения не ставится. Таким образом, число 15,5 в формате с плавающей запятой и линейной записи (компьютерное представление) будет записано в виде: 0.155Е2; 1.55Е1; 15.5Е0; 155.0Е-1; 1550.0Е-2 и т.д.

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

где |А| - абсолютное значение мантиссы числа.

Условие (2.9) означает, что мантисса должна быть правильной дробью и иметь после запятой цифру, отличную от нуля, или, другими словами, если после запятой в мантиссе стоит не нуль, то число называется нормализованным. Так, число 15,5 в нормализованном виде (нормализованная мантисса) в форме с плавающей запятой будет выглядеть следующим образом: 0,155 · 10 2 , т. е. нормализованная мантисса будет A = 0,155 и порядок Р = 2, или в компьютерном представлении числа 0.155Е2.

Числа в форме с плавающей запятой имеют фиксированный формат и занимают в памяти компьютера четыре (32 бит) или восемь байт (64 бит). Если число занимает в памяти компьютера 32 разряда, то это число обычной точности, если 64 разряда, то это число двойной точности. При записи числа с плавающей запятой выделяются разряды для хранения знака мантиссы, знака порядка, мантиссы и порядка. Количество разрядов, которое отводится под порядок числа, определяет диапазон изменения чисел, а количество разрядов, отведенных для хранения мантиссы, – точность, с которой задается число.

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

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

2) выполняются арифметические операции над мантиссами чисел;

3) производится нормализация полученного результата.

Поясним сказанное выше на примерах.

Пример 1

Произведем сложение двух чисел 0,5 · 10 2 и 0,8 · 10 3 в формате с плавающей запятой.

Решение.

Проведем выравнивание порядков и сложение мантисс 0,05 · 10 3 + 0,8 · 10 3 = 0,85 · 10 3 . Полученная мантисса 0,85 является нормализованной, так как удовлетворяет условию (2.9).

Пример 2

Произведем сложение двух чисел 0,1 · 2 2 и 0,1 · 2 3 в формате с плавающей запятой.

Решение.

Проведем выравнивание порядков и сложение мантисс: 0,01 · 2 3 + 0,1 · 2 3 = 0,11 · 2 3 . Полученная мантисса 0,11 является нормализованной, так как удовлетворяет условию (2.9).

Упражнения для самостоятельного выполнения

1. Перевести числа, записанные в римской системе счисления, в числа десятичной системы счисления:

a) XL; б) СХХХ; в) CDXXVIII; г) CMLXXVI; д) MCMLII; е) MMV.

2. Используя программу MS Excel, реализовать автоматический перевод чисел из десятичной системы счисления в римскую.

3. Создать и заполнить все ячейки следующей таблицы, используя табличный процессор MS Excel.



4. Используя формулы (2.1) -(2.6) записать в развернутом виде числа:

a) K 10 = 12355; б) К 8 = 321476; в) К 2 = 101110011;

г) K 16 = 143D5; е) K 10 = 769,314; ж) К 8 = 0,1734;

з) K 2 = 100101,011; и) K 16 = ЗА1,5С1.

5. Заполнить все строки следующей таблицы.



6. Правильно ли записаны числа в соответствующих системах счисления:

а) К 2 = 100200; б) K 16 = CD1; в) K 10 = F,345; г) K 8 = -122453?

7. Какие из чисел 3D7 16 , 10010111 2 , 375 8 и 13424 5 являются наибольшим и наименьшим?

8. Перевести числа 234 10 , 1000 10 , 30,75 10 , 9,8 10 в двоичную, восьмеричную и шестнадцатеричную системы счисления.

9. Перевести числа 10001 2 , 1010,01 2 , 111111 2 , 1001110,011 2 в десятичную, восьмеричную и шестнадцатеричную системы счисления.

10. Перевести числа 27 16 , D,1B 16 , 41 16 , 25E,8 16 в двоичную, восьмеричную и десятичную системы счисления.

11. Перевести числа 237 8 , 1050 8 , 33,75 8 , 0,756 8 в двоичную, десятичную и шестнадцатеричную системы счисления.

12. Какое число следует и предшествует каждому из приведенных ниже чисел:

а) 121 3 ; б) 9А 16 ; в) 1001101 2 ; г) 735 8 д) 234 10 ; е) 135 6 ; ж) 258 9 ?

13. Выполнить арифметические действия:

а) 46 8 + 135 8 ; г) 212 8 – 165 8 ; ж) 12 8 · 137 8 ;

б) 1010111 2 + 101 2 ; д) 1011001 2 – 10111 2 ; з) 1101 2 101 2 ;

в) 1АЕ 16 + 32В 16 ; е) 10C 16 – D 16 ; и) 3D 16 · 1A 16 .

14. Создать и заполнить в MS Excel таблицу, записав десятичные числа в заданном компьютерном представлении:



15. Создать и заполнить в MS Excel таблицу, записав десятичные числа в прямом, обратном и дополнительных кодах в 16-разрядном компьютерном представлении:



16. Представить заданные числа в форме с плавающей запятой и нормализованном виде:

а) 234,678 10 ; б) 1024 10 ; в) 35769 10 ; г) 0,126 10 ;

д) 111 2 ; е) 47 8 ; ж) 1DC 16 .

17. Произвести сложение, вычитание и умножение следующих чисел в формате с плавающей запятой:

а) 0,537 · 10 2 и 0,25 · 10 1 ; б) 0,1 · 2 1 и 0,1 · 2 -2 .

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

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

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

Алфавит — это множество (как правило конечное) символов или букв, например латинских букв и цифр. Примером распространённого алфавита является двоичный алфавит {0,1}. Конечная строка — это конечная последовательность букв алфавита. Например, двоичная строка — это строка из символов алфавита {0,1}. Также возможно построение бесконечных последовательностей из букв алфавита.

Позиционная система счисления (позиционная нумерация) — система счисления, в которой значение каждого числового знака (цифры) в записи числа зависит от его позиции (разряда). Наиболее известной позиционной системой счисления является десятичная система счисления. Например, в десятичном числе 555 первая цифра справа означает 5 единиц, соседняя с ней - 5 десятков, а левая - 5 сотен.

Преобразование целых чисел

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

Рассмотрим для примера перевод числа из десятичной системы счисления в двоичную систему счисления.

Возьмём десятичное число А10 = 124 и поделим его на основание двоичной системы, то есть число 2. Деление будем производить уголком:

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

Теперь то же самое число переведём в восьмеричную систему счисления. Для этого число 12410 разделим на число 8:

Как мы видим, остаток от первого деления равен 4. То есть младший разряд восьмеричного числа содержит цифру 4. Остаток от второго деления равен 7. то есть второй разряд восьмеричного числа – это цифра 7. Старший разряд получился равным 1. То есть в результате многократного деления мы получили восьмеричное число 1748.

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

1×82+7×81+4×80=6410+5610+410=124

;А можно ли осуществить перевод из восьмеричной системы счисления в двоичную делением? Можно! Но деление нужно произвести по правилам восьмеричной арифметики. Правила работы в восьмеричной системе счисления мы рассмотрим в следующей главе. Тем не менее, для полноты материала, рассмотрим пример перевода в двоичную форму полученного ранее восьмеричного числа 1748. Разделим его на основание новой системы счисления 2.

Как мы убедились выполнять деление в восьмеричной системе очень неудобно, ведь подсознательно мы делим в десятичной системе счисления. Давайте обратим внимание на то, что число 8 является степенью числа 2. То есть можно считать восьмеричную систему счисления просто более короткой записью двоичного числа. Это означает, что для представления восьмеричной цифры можно использовать три двоичных бита (8=23). Давайте составим таблицу соответствия. Она приведена в таблице 1.

Таблица 1. Таблица соответствия восьмеричных цифр и двоичного кода

Двоичный код

Восьмеричная цифра

Десятичный эквивалент

Используя эту таблицу можно просто заменить каждую восьмеричную цифру тремя двоичными битами. Три двоичных бита обычно называют триадой или трибитом. Теперь давайте переведём восьмеричное число 1748 в двоичную форму при помощи таблицы 7:

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

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

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

В качестве примера использования таблицы 2 переведем шестнадцатеричное число 7С16 в двоичную форму представления:

Таблица 2. Таблица соответствия шестнадцатеричных цифр и двоичного кода

Двоичный код

Восьмеричная цифра

Десятичный эквивалент

0000

0001

0010

0011

0100

0101

0110

0111

1000

1001

1010

1011

1100

1101

1110

1111

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

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

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

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

ЦА представляет собой последовательностную схему и служит для обработки дискретной информации.

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

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

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

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

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

Десятичное (с основанием 10) число представляет собой строчку из цифр и (при этом) подразумевается, что они должны быть умножены на последовательные степени числа 10 для образования индивидуальных произведений, а затем вместе сложены. Например, . Для записи числа требуется десять символов (от 0 до 9), а степень числа 10, на которую должна быть умножена цифра, определяется ее положением по отношению к десятичной запятой. Если мы хотим представить число с помощью только двух символов (0 и 1), то такая система счисления будет называться двоичной или системой с основанием 2. В этом случае каждая 1 или 0 будет умножаться на последовательные степени числа 2. Например,

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

Только что описанным методом мы преобразовали число из двоичной формы в десятичную. Для того чтобы произвести обратное преобразование, десятичное число нужно последовательно делить на 2, каждый раз записывая остаток. Для преобразования числа 1310 в двоичное нужно произвести следующие операции: , остаток 1; , остаток , остаток 1; , остаток 1; это дает .

Заметим, что ответ образуется, начиная с младшего значащего разряда (МЗР).

Шестнадцатеричное представление чисел.

Для описания систем только с двумя состояниями естественно применять двоичные числа. Однако, как будет показано ниже, это не единственный способ. Поскольку двоичные числа имеют большую длину, для их записи используется шестнадцатеричное (с основанием 16) представление. Для записи двоичного числа в шестнадцатеричном коде его разбивают на группы по 4 бит, каждая из которых может принимать значения от О до 15. Поскольку для обозначения каждой шестнадцатеричной позиции мы хотим использовать один символ, величины 10-15 будем обозначать буквами латинского алфавита от А до F:

Шестнадцатеричное представление лучшим образом соответствует байтовой (1 байт = 8 бит) структуре ЭВМ, которая чаще всего реализуется в виде 16- или 32-разрядных машинных «слов», при этом каждое слово состоит из 2 или 4 байтов. Буквенно-цифровые знаки (буквы, цифры или символы) представляются в виде одного байта. Таким образом, каждый байт в шестнадцатеричной системе состоит из двух шестнадцатеричных цифр, -разрядное машинное слово из шестнадцатеричных цифр и т.д.

Например, в широко используемом коде ASCII (см. разд. 10.19) малое в -представлении есть 01100001 (61 в шестнадцатеричном коде, который записывается как ), есть и т.д. Таким образом, слово может быть сохранено в двух -битных словах, которые имеют значения . Как другой пример, размещение памяти в компьютере с памятью байт) может определяться -байтным адресом, поскольку наинизший адрес есть , наивысший - FFFFH, вторая половина памяти начинается с , а четвертая четверть памяти - с . Вы случайно можете встретить «восьмеричную» запись (основание 8), к сожалению, в ранних ЭВМ были приняты 12- и -разрядные слова, которые использовали -разрядное представление буквенно-цифровых знаков. Поскольку -разрядные знаки было логично представлять в восьмеричном коде, внедрилась эта система счисления. Она сохранилась до настоящего времени и с успехом применяется для записи двоичных чисел, однако зачастую может создавать определенные неудобства.

Упражнение 8.1. Запишите восьмеричное представление в коде ASCII символов , используя шестнадцатеричное значение, приведенное ранее. Затем запишите восьмеричное представление -разрядного Слова, составленного из двух байт вместе . Почему они различаются? Определите, каким будет восьмеричное представление -разрядного слова, содержащего сочетание в коде ASCII.

Двоично-десятичный код.

Другим методом представления чисел является двоичное кодирование каждой десятичной, цифры, записываемой в виде группы из 4 двоичных разрядов. Например, (двоично-десятичный код). Заметим, что двоично-десятичное представление числа не эквивалентно двоичному, которое в данном случае будет иметь вид: Можно считать, что разряды двоично-десятичного кода, начиная с правого, выражают числа 1, 2, 4, 8, 10, 20, 40, 80, 100, 200, 400, 800 и т.д. Очевидно, что двоично-десятичное кодирование с точки зрения использования двоичных разрядов не экономично, поскольку каждая группа из 4 бит способна представлять числа от 0 до 15, но используется для записи числа, не превышающего 9 (за исключением редкого случая записи цифровой информации с четным паритетом на -дорожечную магнитную ленту). Двоично-десятичное кодирование очень удобно в тех случаях, когда требуется воспроизвести число в десятичной форме, так как в этом случае каждый двоично-десятичный символ нужно лишь преобразовать в соответствующее десятичное число, а затем вывести его на индикацию. (Для выполнения этой функции существуют специальные ИМС; в одном небольшом корпусе с простой топологией они содержат дешифратор двоично-десятичного кода, формирователи сигналов, буферный регистр и индикатор.

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

Упражнение 8.2. Преобразуйте в десятичный код следующие числа: а) 1110101,01102, б) 11,010101012, в) . Преобразуйте в двоичный код следующие числа: а) 102310, б) 102316. Преобразуйте в шестнадцатеричный код следующие числа: а) 1011101011012, в) 6145310.

Числа со знаком.

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

Таблица 8.1. 4-разрядные двоичные числа в трех системах представления

Смешенный код.

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

Дополнительный код.

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

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

Арифметика в дополнительном коде.

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

Чтобы вычесть В из А, нужно взять дополнительный код числа В и прибавить его к числу А (т. е. прибавить отрицательное число):

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

Упражнение 8.3. Используя -разрядный дополнительный код, произведите двоичное умножение на - 3. Подсказка: ответ равен -6.

Упражнение 8.4. Покажите, что дополнительный код числа -5 равен .

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

Код ГРЕЯ.

Код, рассматриваемый ниже, используется в механических шифраторах угла поворота вала, а также в других устройствах. Он носит название кода Грея и обладает тем свойством, что при переходе от любого его состояния к следующему изменяется лишь один разряд (бит), что позволяет предотвратить ошибки, поскольку в данном случае при переходе между двумя закодированными значениями все разряды никак не могут измениться одновременно. Если бы использовался чисто двоичный код, то при переходе, например, от 7 к 8 на входе можно было бы получить число 15. Для формирования состояний кода Грея существует простое правило: начинать нужно с нулевого состояния, а затем для получения каждого следующего нужно выбрать самый младший разряд, изменение которого приводит к образованию нового состояния, и взять его инверсное значение.

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

Очень часто при изучении компьютерной и цифровой техники путают понятия и двоичных кодов. В двоичной системе счисления для записи чисел применяются двоичные цифры "0" и "1", применяют знаки числа "+" и "−", для отделения целой части числа от дробной используется двоичная запятая ",". Кроме того, длина двоичных чисел зависит от их значения. В случае малого значения числа справа от значащих цифр может ничего не писаться (незначащие нули отбрасываются). При записи очень больших и очень малых чисел может применяться символ "2", например: +1,001101×2 −1011101 Иначе говоря, для записи двоичного числа используется большое количество символов, отличающееся от "0" и "1".

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

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

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

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

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

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

Литература:

Вместе со статьей "Виды бинарных кодов" читают:

Представление двоичных чисел в памяти компьютера или микроконтроллера
http://сайт/proc/IntCod.php

Иногда бывает удобно хранить числа в памяти процессора в десятичном виде
http://сайт/proc/DecCod.php

Стандартные форматы чисел с плавающей запятой для компьютеров и микроконтроллеров
http://сайт/proc/float/

Представление текстов в памяти компьютеров и микроконтроллеров
http://сайт/proc/text/

В настоящее время и в технике и в быту широко используются как позиционные, так и непозиционные системы счисления.
.php



glavpom.ru - Подстанции. Силовая электроника. Экология. Электротехника