|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Арифметические операции 3 страница- расширенный ASCII-код (Latin-1, кодовая страница IS-8859-1, 8 бит); - КОИ-8 (расширенный 8 бит); - кодовая страница IS-8859-2 для славянских букв; - UNICODE (указатель кода IS-10646, 16 бит) – универсальный код, включающий в себя ранее разработанные коды.
Табл.2.19. Коды символов (основная кодировка ГОСТА)
Примечание. Буквосочетанием SP в таблице отмечен невидимый символ пробел.
2.3.4.1. Определение символа по его коду Правило определения символа по коду символа: - каждый символ находится на пересечении строки (старшая цифра Hhex) и столбца (младшая цифра Lhex) в таблице 4.4. Пример: Определить символ, если его код равен 7Вh. Находим символ ‘{‘ на пересечении 7-ой строки (7h) и 11-го (Вh) столбца. Ответ: коду символа 7Вh соответствует символ ‘{‘.
2.3.4.2. Определение кода символа Правило определения кода символа: - код каждого символа составляется из старшей цифры кода Hhex и младшей цифры кода Lhex таблицы 3.4. Пример: Определить код символа ‘=’. Составляем код из старшей цифры 3h (строка) и младшей цифры Dh (столбец). Ответ: символу ‘=‘ соответствует код 3Dh.
2.3.5. Двоично-десятичные числа (BCD)
Двоично-десятичные числа BCD (Binary Coded Decimal - двоично-кодированные десятичные числа, код 8-4-2-1) используется для обработки двоичных чисел по правилам десятичной арифметики и управления индикаторами.
2.3.5.1. Представление десятичного числа в двоично-десятичном упакованном формате В упакованном формате двоично-десятичного кода каждый байт содержит двухразрядное десятичное число. Перевод целого десятичного числа в двоично-десятичную систему счисления (упакованный формат) производится по правилу: каждая десятичная цифра (от 0 до 9) преобразуется в двоично-десятичный эквивалент из четырех бит (от 0000 до 1001). Пример: 2910=(2) (9)=0010 10012-10 (число 29 в упакованном формате).
2.3.5.2. Представление десятичного числа в двоично-десятичном неупакованном формате В неупакованном формате двоично-десятичного кода каждый байт содержит один разряд десятичного числа. Перевод целого десятичного числа в двоично-десятичную систему счисления (неупакованный формат) производится по правилу: каждая десятичная цифра (от 0 до 9) преобразуется в двоично-десятичный эквивалент из четырех бит (от 0000 до 1001) и записывается в младшую тетраду байта. Пример: 2910=(2) (9)=0000 0010 0000 10012-10 (число 29 в неупакованном формате).
2.3.5.3. Перевод BCD упакованного формата в десятичное число Перевод двоично-десятичного упакованного числа в десятичную систему счисления производится по правилу: каждые четыре бита (младшая и старшая тетрада) переводятся в десятичный символ с помощью степенного ряда. Пример: 0010 10012-10 = (0010) (1001)=(0×23 + 0×22 + 1×21 + 0×20) (1×23 + 0×22 + 0×21 + 1×20) = 2910.
2.3.5.4. Перевод BCD неупакованного формата в десятичное число Перевод двоично-десятичного неупакованного числа в десятичную систему счисления производится по правилу: четыре младших бита байта (младшая тетрада) переводятся в десятичный символ с помощью степенного ряда. Пример: 0000 0010 0000 10012-10 = (0+0+0+0 + 0+0+2+0) (0+0+0+0 + 8+0+0+1) = 2910.
2.4. Арифметические операции Арифметические операции сложения, вычитания, умножения и деления основаны на общих правилах, применяемых в позиционных системах счисления.
2.4.1. Арифметическое сложение 2.4.1.1. Арифметическое сложение двоичных чисел
Арифметическое сложение двоичных чисел выполняется по следующим правилам: 0 + 0 = 02; 0 + 1 = 12; 1 + 0 = 12; 1 + 1 = 102; 1 + 1 + 1 = 112. Сложение двух чисел в двоичной системе выполняется столбиком, справа налево, начиная с младшего (правого) разряда, как в десятичной системе. В каждом разряде в соответствии с правилами, указанными таблицей двоичного сложения, производится сложение двух бит слагаемых или этих двух бит и единицы, если имеется перенос из соседнего (правого) младшего разряда. В результате получается цифра соответствующего разряда суммы и, возможно, также единица переноса в соседний старший (левый) разряд.
Пример: Сложить два числа 2810 + 5810 в восьмиразрядной сетке. Порядок выполнения арифметического сложения двоичных чисел в восьмиразрядной сетке приведен в табл. 2.20.1.
Табл.2.20.1. Арифметическое сложение двух чисел 2810 + 5810
Примечание. С – это бит переноса из старшего седьмого разряда. Ответ: 2810 + 5810 = 0001 11002 - 0011 10102 = 0101 01102 = 8610.
Пример: Сложить два числа 25510 + 110 в восьмиразрядной сетке. Порядок выполнения арифметического сложения двоичных чисел в восьмиразрядной сетке приведен в табл. 2.20.2.
Табл.2.20.2. Арифметическое сложение двух чисел 25510 + 110
Примечание. Значение бита переноса С в результате не учитывается.
Ответ: при сложении десятичных чисел 25510 + 110 получается 25610, которое не входит в диапазон восьмиразрядной сетки 0 … 25510. Поэтому результат в двоичной системе 000000002 получается неверный из-за переполнения восьмиразрядной сетки. Для получения правильного результата необходимы вычисления с двойной точностью, то есть в шестнадцатиразрядной сетке.
Пример: Сложить два числа 25510 + 110 в шестнадцатиразрядной сетке. Порядок выполнения арифметического сложения двоичных чисел в шестнадцатиразрядной сетке приведен в табл. 2.20.3.
Табл.2.20.3. Арифметическое сложение двух чисел 25510 + 110
Ответ: при сложении десятичных чисел 25510 + 110 получается 25610, которое входит в диапазон шестнадцатиразрядной сетки 0 … 6553510. Поэтому результат в двоичной системе получается верный 0000 0001 0000 00002 = 25610.
Пример: Сложить два числа -110 + 110 в восьмиразрядной сетке. Порядок выполнения арифметического сложения двоичных чисел в восьмиразрядной сетке приведен в табл. 2.20.4.
Табл.2.20.4. Арифметическое сложение двух чисел -110 + 110
Примечание. СF – разряд переноса (заема). Значение бита переноса СF в результате не учитывается.
Ответ: при сложении десятичных чисел -110 + 110 получается 010, которое входит в диапазон восьмиразрядной сетки -12810 … 0 … +12710. Результат 0000 00002 верный.
2.4.1.2. Арифметическое сложение шестнадцатеричных чисел
Арифметические сложение шестнадцатеричных чисел выполняется по правилам, применяемым в позиционных системах счисления.
Пример:Выполнить сложение шестнадцатеричных чисел 000Eh + 0001h. Результат представить в шестнадцатиразрядной сетке.
Ответ: 000Fh + 0001h = 0010h.
Пример: Выполнить сложение шестнадцатеричных чисел 000Fh + 0001h. Результат представить в шестнадцатиразрядной сетке.
Ответ: 000Fh + 0001h = 0010h.
Пример: Выполнить сложение шестнадцатеричных чисел 000Fh + 000Fh. Результат представить в шестнадцатиразрядной сетке.
Ответ: 000Fh + 000Fh = 000Еh.
Пример: Выполнить сложение шестнадцатеричных чисел 7FFFh+0001h в формате без знака. Результат представить в шестнадцатиразрядной сетке. Выполнить верификацию результата.
Ответ: 7FFFh + 0001h = 8000h – верный, так как результат формате без знака входит в диапазон 0 … 6553510 или 0000h … FFFFh.
Пример: Выполнить сложение шестнадцатеричных чисел 7FFFh+0001h в формате со знаком. Результат представить в шестнадцатиразрядной сетке. Выполнить верификацию результата.
Ответ: 7FFFh + 0001h = 8000h – не верный, так как результат формате со знаком не входит в диапазон -32768 … +3276710 или 8000h … 7FFFh и произошло переполнение шестнадцатиразрядной сетки в дополнительном коде.
Пример: Выполнить сложение шестнадцатеричных чисел FFFFh+0001h в формате без знака. Результат представить в шестнадцатиразрядной сетке. Выполнить верификацию результата.
Ответ: 0000h – не верный, так как результат формате без знакf не входит в диапазон -0 … 6553510 (0000h … FFFFh) и произошло переполнение шестнадцатиразрядной сетки.
Пример: Выполнить сложение шестнадцатеричных чисел FFFFh+0001h в формате со знаком. Результат представить в шестнадцатиразрядной сетке. Выполнить верификацию результата.
Ответ: 0000h – верный, так как результат формате со знаком входит в -32768 … +3276710 или 8000h … 7FFFh.
2.4.2. Арифметическое вычитание
Арифметическая операция вычитания выполняется по правилам вычитания (с использованием заёма из старшего значащего разряда): 0 - 0 = 02; 0 - 1 = 12; 1 - 0 = 12; 1 - 1 = 02. При вычитании 0 - 1 = 12 производится заем в текущий бит.
Пример: Произвести вычитание в восьмиразрядной сетке 9710 - 7810 Порядок выполнения арифметического вычитания двоичных чисел в восьмиразрядной сетке приведен в табл.3.2.
Табл.2.21. Арифметическое вычитание двух чисел 0110 00012 – 0100 11102
Примечание. 1. Символом «↑» отмечен ближайший значащий разряд (равный единице), из которого будет выполнен первоначальный заём. 2. Символами «→» отмечены разряды, из которых выполняются последующие заёмы. 3. Символами «↓» отмечены разряды, в которые выполняются заёмы. 4. С учетом того, что вес каждого, более старшего разряда в два раза больше соседнего, то в каждый, более младший разряд, приходят две единицы (1+1=2). Ответ: 9710 - 7810 = 0110 00012 - 0100 11102 = 0001 00112 = 1910.
Пример: Произвести вычитание в восьмиразрядной сетке 010 - 110 Порядок выполнения арифметического вычитания двоичных чисел в восьмиразрядной сетке приведен в табл.3.2. Табл.2.21. Арифметическое вычитание двух чисел 0000 00002 – 0000 00012
Примечание. СF – разряд заема (переноса). Значение бита переноса СF в результате не учитывается. Ответ: 010 - 110 = 0000 00002 – 0000 00012 = 111111112 = -110.
2.4.3. Арифметическое умножение Арифметическое умножение одноразрядных двоичных чисел выполняется по следующим правилам: 0 ´ 0 = 0; 0 ´ 1 = 0; 1 ´ 0 = 0; 1 ´ 1 = 1. Умножение многоразрядных двоичных чисел происходит в соответствии с вышеприведенным правилам умножения по обычной схеме, применяемой в десятичной системе счисления. Выполняется последовательное умножение множимого на разряды множителя и поразрядным сдвигом промежуточного произведения влево. Количество сдвигов равно номеру разряда множителя. При сдвиге в промежуточные произведения справа дописываются нули. Произведение рассчитывается как сумма промежуточных произведений. Пример: Выполнить умножение 2310 ´ 1110 = 101102 ´ 10112 в двоичной системе счисления. Результат представить в восьмиразрядной и шестнадцатиразрядной сетках. Порядок выполнения арифметического умножения двоичных чисел приведен в табл2.
Табл.2.22. Арифметическое умножение двух двоичных чисел
2310 ´ 1110 = 101112 ´ 10112 = 1111 11012 = 25310 Ответ. В восьмиразрядной сетке результат равен 1111 11012. В шестнадцатиразрядной сетке результат равен 0000 0000 1111 11012.
2.4.4. Арифметическое деление Деление двоичных чисел выполняется по правилу арифметического вычитания. Пример: Выполнить деление целых чисел 11110 : 310 = 11011112 : 112 в двоичной системе счисления. Результат представить: - в целочисленном формате в восьмиразрядной и шестнадцатиразрядной сетках; - в формате с плавающей точкой (32 бита). Порядок выполнения арифметического деления двоичных чисел приведен в таблице 2.23.1.
Табл.2.23.1 Арифметическое деление двух двоичных чисел 11110 : 310
11110 : 310 = 3710; 11011112 : 112 = 10 01012 = 3710
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|