Позиционной называется система счисления, в которой вес разряда числа определяется его позицией в записи числа [1].
Вспомним нашу привычную десятичную систему счисления, в которой мы с детства производим все расчеты. Уже в начальной школе мы привыкли к терминам "единицы", "десятки", "сотни", "тысячи", "десятые", "сотые", "тысячные" и не задумываемся над тем, что они означают вес разряда, выраженный в виде числа, равного $$10^{k}$$, где $$k $$ - целое число. Например, число 125, 46 можно представить в виде суммы:
$$125,46 = 1\cdot 10^{2 }+ 2\cdot 10^{1} + 5\cdot 10^{0} + 4\cdot 10^{-1} + 6 \cdot 10 ^{-2}.$$сотни десятки единицы десятые доли сотые доли
Аналогично любое число $$Y_{10}$$ в десятичной системе счисления можно представить в виде подобной суммы:
$$Y_{10} = а_{n-1} \cdot 10^{n-1 }+ а_{n-2} \cdot 10^{n-2 }+ … +а_{1} \cdot 10^{1} + a_{0} \cdot 10^{0} + a_{-1}\cdot 10^{-1} +…+ a_{-m}\cdot 10^{-m} = \sum\limits_{i=n-1}^{-m}{a_i \cdot 10^{i}} ,$$где $$n$$ - количество знаков в целой части числа, $$m$$ - количество знаков в дробной части числа, $$10^{i}$$ - вес $$i$$ -го разряда, $$а_{i} $$ - весовой коэффициент для $$i$$ -го разряда числа. Количество возможных вариантов значения коэффициента $$а_{i}$$ в десятичной системе счисления равно $$10$$, поскольку для записи чисел в ней используются десять знаков - арабские цифры "0", "1", "2", "3", "4", "5", "6", "7", "8" и "9". Число $$10$$ является основанием системы счисления. Исторически сложилось, что десятичная система получила наибольшее распространение, хотя по этому принципу можно сделать аналогичную запись в любой другой системе счисления c любым другим основанием. В табл. 11.1 прослежива ется аналогия между позиционными системами счисления.
Основание системы счисления - это число, равное количеству знаков, которые используются в этой системе для записи чисел.
Для числа в системе счисления с основанием $$b$$ выражение (11.1) преобразуется к виду:
$$Y_{b} = а_{n-1} \cdot b^{n-1 }+ а_{n-2} \cdot b^{n-2 }+ … +а_{1} \cdot b^{1} + a_{0} \cdot b^{0} + a_{-1}\cdot b^{-1} +…+ a_{-m}\cdot b^{-m} =\sum\limits_{i=n-1}^{-m}{a_i \cdot b^{i}} .$$| Название системы счисления | Основание системы счисления | Знаки, использующиеся для записи чисел |
|---|---|---|
| Двоичная | 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. Основание восьмеричной системы $$8= 2^{3}$$, а основание шеснадцатиричной системы - это $$16 = 2^{4}$$. Для записи шестнадцатеричных чисел арабских цифр не хватает, поэтому используются первые шесть заглавных букв латинского алфавита.
Итак, далее мы подробно рассмотрим именно эти позиционные системы - двоичную, восьмеричную, шестнадцатеричную и их связь с привычной нам десятичной системой счисления.
Приведем примеры записи чисел в указанных системах и найдем их десятичные эквиваленты по формуле (11.2).
Для двоичного числа:
$$10111,01_{2 }= 1 \cdot 2^{4} + 0\cdot 2^{3} + 1\cdot 2^{2} +1\cdot 2^{1} + 1\cdot 2^{0} + 0\cdot 2^{-1 }+1\cdot 2^{-2} = 16 + 4 + 2 + 1 + \cfrac{1}{4} = 23,25.$$Здесь и далее будем придерживаться следующего правила: числа в двоичной, восьмеричной и шестнадцатеричной системах записываются с указанием основания, десятичные - без этой записи.
Для восьмеричного числа:
$$302, 02_{8} = 3 8^{2} + 0 8^{1} + 2 8^{0} + 0 8^{-1} + 2 8^{-2} = 3 \cdot 64 + 2 \cdot 1 + 2 \cdot \cfrac{1}{64} \approx 194,03.$$Для шестнадцатеричного числа:
$$1Е, 03_{16 }= 1 16^{1} + 14 16^{0} + 0 16^{-1} + 3 16^{-2} = 16 + 14 + 3 \cdot \cfrac{1}{16^2} \approx 30, 01.$$Округление относится к дробной части числа, целая часть переводится точно. Особенностью перевода из шестнадцатеричного кода в десятичный код является то, что в качестве коэффициента $$а_{i}$$ используется десятичный эквивалент шестнадцатеричного знака в соответствии с таблицей 11.2. Для нашего примера вместо знака " $$Е$$ " в расчетную формулу (11.2) подставляется десятичное число $$14$$.
Из рассмотренных примеров видно, что общая формула (11.2) может использоваться для перевода числа из системы счисления с любым основанием в десятичную.
Целое десятичное число нужно поделить на основание новой системы счисления. Остаток от этого деления является самым младшим разрядом в новой записи числа. Результат деления вновь делится на основание. Остаток от этого деления будет следующим разрядом в новой записи числа, результат деления вновь делится на основание и т.д. до тех пор, пока в результате деления получится число, меньшее по величине, чем основание новой системы. Остаток этого последнего деления будет предпоследним разрядом в новой записи числа, а результат этого последнего деления - самым старшим разрядом в новой записи числа.
Проверка перевода осуществляется по формуле (11.2), так, как это показано ниже на примерах.
Пример. Перевести десятичное число 125 в двоичную, восьмеричную и шестнадцатеричную системы счисления. Проверить результаты по формуле (П11.2).
| $$\arraycolsep=0.05em \begin{array}{l@{\,}rl@{\,}rl@{\,}rl@{\,}rl@{\,}rl@{\,}rl@{\,}rl} _{-}125 |2 \\ \cline{3-4} 124 _{-}62 |2\\ \cline{2-2}\cline{5-6} 1 62 _{-}31 |2\\ \cline{4-4}\cline{7-8} 0 30 _{-}15 |2\\ \cline{6-6}\cline{9-10} 1 14 _{-}7 |2\\ \cline{8-8}\cline{11-12} 16 _{-}3 |2\\ \cline{10-10}\cline{13-14} 1 21\\ \cline{12-12} 1\\ \end{array} \\ 125_{10} = 1111101_2$$ | $$\arraycolsep=0.05em \begin{array}{rrrrrrrr} _{-}125|8\\ \cline{5-6} 8 _{-}15|8\\ \cline{2-3}\cline{7-7} _{-}45 8 1\\ \cline{6-6} 40 7\\ \cline{3-4} 5 \end{array} \\ 125_{10}=175_8$$ | $$\arraycolsep=0.05em \begin{array}{rrr} _{-} 125 |16\\ \cline{3-3} 112 7\\ \cline{2-2} 13\\ \end{array} \\ 125_{10} = 7D_{16}$$ |
| a) | б) | в) |
Проверка:
В рассмотренном примере при переводе вместо коэффициента $$а_{0} =D$$ используется его десятичный эквивалент $$13$$ в соответствии с таблицей 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 |
Примеры:
Обычно программы в машинных кодах записаны в шестнадцатеричной системе счисления, реже - в восьмеричной. При необходимости отдельные числа такой программы записываются в двоичном коде, например, при рассмотрении форматов регистров, кодов операции команд и т.п. В этом случае нужен обратный перевод из шестнадцатеричной (
Каждая цифра (без всяких сокращений!) шестнадцатеричного ( восьмеричного ) числа заменяется одной двоичной группой из четырех ( трех ) двоичных знаков (табл. 11.2).
Примеры:
Как показано в примерах, крайние нули слева и справа при желании можно не писать, но такое сокращение делается уже после перевода в двоичную систему.
В простейшем случае, для одноразрядных чисел, правила двоичного сложения имеют вид:
$$\begin{array}{r} _{+ }0\\ 0\\ \cline{1-1} 0\\ \end{array}\;\;\; \begin{array}{r} _{+ }0\\ 1\\ \cline{1-1} 1\\ \end{array}\;\;\; \begin{array}{r} _{+ }1\\ 0\\ \cline{1-1} 1\\ \end{array}$$При сложении ( $$1+1$$ ) возникает два случая:
Многоразрядные числа складываются по тем же правилам, но при этом учитывается входной перенос в каждом разряде: выходной перенос младшего разряда является входным переносом для соседнего старшего разряда. Рассмотрим несколько примеров сложения многоразрядных чисел.
$$\text{выходной перенос из старшего разряда}\\ \begin{array}{rrrrrrrrl} \downarrow \\ 1 1 1 1 1 1 \gets\text{ перенос}\\ _{+}1 1 1 1 0 1 =61 \\ 0 1 1 1 1 =15 \\ \cline{2-8} 1 0 0 1 1 0 0 \gets\text{ }сумма = 76\\ \uparrow \\ \end{array}\\ \text{дополнительный разряд суммы, образовавшийся в результате переноса}$$ $$\begin{array}{rrrrrrrl} 1 1 1 \gets\text{ перенос }\\ _{+}1 0 1 0 0 1 =41\\ 0 1 0 1 1 =11\\ \cline{2-7} 1 1 0 1 0 0 \gets\text{ }сумма =52\\ \end{array}$$Здесь рассматриваются правила, работающие в случае вычитания меньшего числа из большего. Все остальные случаи рассматриваются ниже в разделе 3.2, посвященном двоичной арифметике со знаками. В простейшем случае, для каждого разряда, правила двоичного вычитания имеют вид:
$$\begin{array}{rrrrrrrr} _{-}0 _{-}1 _{-}1 _? 0 \\ \underline{0} \underline{0} \underline{1} \underline{1} \\ 0 1 0 1 \\ \end{array}$$Когда производится вычитание ( $$0 - 1$$ ) осуществляется займ из более старшего разряда. Знак вопроса означает, что разряд уменьшаемого изменяется в результате займа по правилу:
При вычитании (0 - 1) в разряде разности получается 1, разряды уменьшаемого, начиная со следующего, изменяются на противоположные (инвертируются) до первой встречной единицы (включительно). После этого производится вычитание из измененных разрядов уменьшаемого.
Рассмотрим несколько примеров вычитания многоразрядных чисел (из большего числа вычитается меньшее).
$$\begin{array}{rrrrrrrrl} 0 1 1 1 \gets\text{ изменение уменьшаемого в результате займа}\\ _{-}1 0 0 0 0 1 =33\\ 0 1 0 1 1 =11\\ \cline{3-8} 0 1 0 1 1 0 \gets\text{ разность=22}\\ \end{array}$$ $$\begin{array}{rrrrrrrrl} 0 1 0 1 1 \gets \text{изменение уменьшаемого в результате займа}\\ _{-}1 0 1 0 0 0 =40\\ 1 1 0 1 1 =27\\ \cline{3-8} 0 0 1 1 0 1 \gets \text{ }разность=13\\ \end{array}$$Очевидно, что как в десятичном, так и в двоичном коде, складывать значительно проще, чем вычитать. Поэтому большое распространение получила двоичная арифметика с учетом знаков чисел, где вычитание заменяется сложением чисел с учетом их знака. При этом уже не имеет значения соотношение чисел между собой, какое из них больше - вычитаемое или уменьшаемое. Знак разности получается автоматически.
В двоичном коде знак числа представляет собой разряд, приписываемый слева от значащих разрядов числа. Знак " $$+$$ " обозначается логическим $$0$$, знак " $$-$$ " - логической $$1$$. Для наглядности все примеры будем рассматривать для целых чисел, отделяя знаковый разряд точкой.
Прямой код (ПК) и для отрицательных, и для положительных чисел образуется одинаково, простым дописыванием знакового разряда.
Так, в восьмиразрядном формате
Обратный код (ОК) для положительных чисел совпадает с прямым, т.е. к значащим разрядам приписывается знаковый разряд. Для отрицательных чисел значащие разряды инвертируются (нули заменяются на единицы, единицы - на нули), после чего приписывается знак.
Для того же числа
Недостатком обратного кода является то, что одно и то же число $$(+0)$$ и $$(-0)$$ записывается по-разному: $$(+ 0) = 0.0000000$$, $$(-0)=1.1111111$$, что может вызвать нежелательное разночтение работы логической схемы. Поэтому предпочтительным является дополнительный код.
Дополнительный код (ДК) для положительных чисел совпадает с обратным и прямым, т.е. к значащим разрядам приписывается знаковый разряд. Для отрицательных чисел дополнительный код на 1 больше, чем обратный. После образования значащих разрядов приписывается знаковый разряд.
Для значащих разрядов отрицательного числа справедлива формула:
$$ДК=ОК+1.$$Напишем число $$(-0)$$ в 7-разрядном дополнительном коде:
$$\begin{array}{rrrrrrrrrl} _{ }0 0 0 0 0 0 0 \gets ПК \\ _{+}1 1 1 1 1 1 1 \gets ОК \\ 1 \\ \cline{3-9} \text{выходит за принятый формат и теряется }\to \fbox{1} 0 0 0 0 0 0 0 \gets ДК \\ \end{array}$$Таким образом в дополнительном коде $$(+0)=(-0)$$, следовательно, указанный недостаток обратного кода преодолен.
Рассмотрим образование дополнительного кода для числа 10. Для положительного числа $$(+ 10) = 0.0001010$$, а для отрицательного числа $$(-10) $$ дополнительный ко д получается следующим образом:
$$\begin{array}{rrrrrrrrrl} _{ }0 0 0 1 0 1 0 \gets ПК\\ _{+}1 1 1 0 1 0 1 \gets ОК\\ 1 \\ \cline{3-9} \text{приписываем знак числа}\to 1. 1 1 1 0 1 1 0 \gets ДК \end{array}$$Для замены вычитания сложением применяется и обратный, и дополнительный коды, при этом в каждом из них действуют свои правила.
При решении во избежание типовых ошибок рекомендуется придерживаться следующей последовательности действий. Допустим, заданы два десятичных числа, тогда необходимо:
Для наглядности возьмем два десятичных числа, например, $$20$$ и $$55$$, и сделаем все возможные варианты вычислений:
Число положительное, поэтому ОК=ПК, для проверки числа нужно перевести его значащие разряды в десятичный код по (П3-2): $$1001011_{2} =1+2+8+64= 75$$.
Здесь важно уяснить, что крайние левые нули в значащих разрядах сокращать нельзя, поскольку они являются значимыми. Иными словами, все вычисления для каждого примера производятся в неизменном формате, в данном случае в примере (б) - это шесть значащих разрядов, т.е. столько, сколько содержится в большем числе.
$$\begin{array}{rrrrrrrl} _{+}0. 0 1 0 1 0 0 =+20\\ 1. 0 0 1 0 0 1 =-55\\ \cline{1-7} 1. 0 1 1 1 0 1 \gets результат\\ \uparrow \\ \end{array}\\ \text{знаковый разряд отрицательного числа}$$Вновь получили знак числа и его значащие разряды, занимающие жестко заданные позиции в выбранном формате числа. Поскольку получено отрицательное число, то ДК ПК, для проверки его значащих разрядов нужно сначала вычислить
а затем уже перевести его в десятичный код по (П3-2): $$100011 _{2} =1+2+32= 35$$.
После этого произведем вычисления:
$$\text{перенос из знакового разряда (отбрасывается)}\\ \begin{array}{clrrrrrrl} \downarrow \\ \fbox{1} 1 1 1 1 \getsперенос\\ _{+} 1. 1 0 1 1 0 0 = -20\\ 0. 1 1 0 1 1 1 = +55\\ \cline{3-8} 0. 1 0 0 0 1 1 \getsрезультат\\ \uparrow \\ \end{array}\\ \text{знаковый разряд положительного числа}$$Получено положительное число, поэтому $$ДК=ПК$$, для проверки результата нужно только перевести значащие разряды в десятичный код: $$100011_{2} =1+2+32= 35$$.
А для числа $$(-55)$$ -
$$\text{резервный разряд во избежание переполнения}\\ \begin{array}{rccrrrrrrl} \downarrow \\ \fbox{0} 1 1 0 1 1 1 \gets ПК\\ _{+} \fbox{1} 0 0 1 0 0 0 \gets ОК\\ \fbox{\phantom{1}} 1 \\ \cline{3-9} \text{приписываем знак числа}\to 1. \fbox{1} 0 0 1 0 0 1 \gets ДК\\ \end{array}$$Сложим полученные числа в том же формате:
$$\begin{array}{c} \begin{array}{rllllllllll} \text{перенос из знака (игнорируется)} \to \fbox{1} 1 1 \gets перенос\\ _{+} 1. 1 1 0 1 1 0 0 =-20\\ 1. 1 0 0 1 0 0 1 =-55\\ \cline{4-10} 1. 0 1 1 0 1 0 1 \gets результат\\ \uparrow \\ \end{array}\\ \text{знаковый разряд отрицательного числа} \end{array}$$Поскольку число отрицательное, $$ДК\neПК$$. Для проверки значащих разрядов числа нужно сначала вычислить
И только после этого полученное число проверяется переводом в десятичный код по (11.2): $$1001011_{2} =1+2+8+64= 75$$.
Дополнительный код - запись числа, в которой для отрицательных чисел значащие разряды получаются как увеличенный на 1
Обратный код - запись числа, в которой для отрицательных чисел значащие разряды записываются в виде инверсии разрядов модуля числа. Самостоятельного значения не имеет.
Основание системы счисления - это число, равное количеству знаков, которые используются в этой системе для записи чисел.
Позиционная система счисления - в которой вес разряда определяется его позицией в записи числа.
Прямой код - запись числа, в которой к значащим разрядам приписывается знаковый разряд.
Система счисления - совокупность знаков, применяемая для записи чисел.
ДК - дополнительный код.
ОК -
ПК - прямой код.
При описании работы ЭВМ широко используется двоичная система счисления, поскольку в ней используются два знака для записи чисел. Данный факт хорошо сочетается с тем, что все схемы ЭВМ могут находиться в двух состояниях - состояниях логического нуля и логической единицы. Для двоичных чисел действуют свои правила двоичной арифметики. Основными её операциями являются сложение и вычитание. Поскольку сложение является более простым и универсальным действием, вычитание заменяется сложением двоичных чисел с учётом их знаков. Знак чисел также обозначается одним двоичным разрядом и все действия над знаковыми разрядами осуществляются по тем же правилам двоичного сложения.
Упражнение 1
Вариант 1 упражнения 1.Переведите десятичное число 25 в двоичный, восьмеричный и шестнадцатеричный коды.
Вариант 2 упражнения 1. Переведите десятичное число 30 в двоичный, восьмеричный и шестнадцатеричный коды.
Вариант 3 упражнения 1. Переведите десятичное число 35 в двоичный, восьмеричный и шестнадцатеричный коды.
Упражнение 2
Вариант 1 упражнения 2. Напишите прямой, обратный и дополнительный коды числа (-40)
Вариант 2 упражнения 2. Напишите прямой, обратный и дополнительный коды числа (-44)
Вариант 3 упражнения 2. Напишите прямой, обратный и дополнительный коды числа (-49)
Упражнение 3
Вариант 1 упражнения 3. Напишите прямой, обратный и дополнительный коды числа (+40)
Вариант 2 упражнения 3. Напишите прямой, обратный и дополнительный коды числа (+44)
Вариант 3 упражнения 3. Напишите прямой, обратный и дополнительный коды числа (+49)
Упражнение 4
Вариант 1 упражнения 4. Сложите в двоичном коде 45 и 25, сделайте проверку результата.
Вариант 2 упражнения 4. Сложите в двоичном коде 40 и 15, сделайте проверку результата.
Вариант 2 упражнения 4. Сложите в двоичном коде 31 и 38, сделайте проверку результата.
Упражнение 5
Вариант 1 упражнения 5. Сделайте вычитание в двоичном коде из 45 числа 25, сделайте проверку результата.
Вариант 2 упражнения 5. Сделайте вычитание в двоичном коде из 65 числа 63 , сделайте проверку результата.
Вариант 2 упражнения 5. Сделайте вычитание в двоичном коде из 55 числа 35, сделайте проверку результата.
Упражнение 6
Вариант 1 упражнения 6. Вычислите в дополнительном коде (66-55), сделайте проверку результата.
Вариант 2 упражнения 6.Вычислите в дополнительном коде (128-55), сделайте проверку результата.
Вариант 3 упражнения 6. Вычислите в дополнительном коде (266-55), сделайте проверку результата.
Упражнение 7
Вариант 1 упражнения 7.Вычислите в дополнительном коде (6-57), сделайте проверку результата.
Вариант 2 упражнения 7. Вычислите в дополнительном коде (18-55), сделайте проверку результата.
Вариант 3 упражнения 7. Вычислите в дополнительном коде (26-155), сделайте проверку результата.
Упражнение 8
Вариант 1 упражнения 8. Вычислите в дополнительном коде (-46-55), сделайте проверку результата.
Вариант 2 упражнения 8. Вычислите в дополнительном коде (-120-55), сделайте проверку результата.
Вариант 3 упражнения 8. Вычислите в дополнительном коде (-6-125), сделайте проверку результата.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.