Хелпикс

Главная

Контакты

Случайная статья





Арифметические операции 3 страница



       - расширенный ASCII-код (Latin-1, кодовая страница IS-8859-1, 8 бит);

       - КОИ-8 (расширенный 8 бит);

       - кодовая страница IS-8859-2 для славянских букв;

       - UNICODE (указатель кода IS-10646, 16 бит) – универсальный код, включающий в себя ранее разработанные коды.

 

Табл.2.19.                              Коды символов (основная кодировка ГОСТА)

ASCII

код

Младшая цифра кода Lhex

A B C D E F

Старшая цифра кода Hhex

УПРАВЛЯЮЩИЕ

СИМВОЛЫ

SP ! # $ % & ( ) * + , - . /
: ; < = > ?
@ A B C D E F G H I J K L M N O
P Q R S T U V W X Y Z [ \ ] ^ _
a b c d e f g h i j k l m n o
p q r s t u v w x y z { | } ~ DEL

 

СИМВОЛЫ ПСЕВДОГРАФИКИ

 

A
B А Б В Г Д Е Ж З И Й К Л М Н О П
C Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я
D а б в г д е ж з и й к л м н о п
E р с т у ф х ц ч ш щ ъ ы ь э ю я
F Ё Ё

ГРАФИЧЕСКИЕ СИМВОЛЫ

Примечание. Буквосочетанием 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

Система счисления  

Двоичное число

Десятичное число

Номер разряда С
Перенос  
1-е слагаемое  
2-е слагаемое  
Сумма  
                         

Примечание. С – это бит переноса из старшего седьмого разряда.

Ответ: 2810 + 5810 = 0001 11002 - 0011 10102 = 0101 01102 = 8610.

 

Пример: Сложить два числа 25510 + 110 в восьмиразрядной сетке. Порядок выполнения арифметического сложения двоичных чисел в восьмиразрядной сетке приведен в табл. 2.20.2.

 

Табл.2.20.2.                        Арифметическое сложение двух чисел 25510 + 110

Система счисления  

Двоичное число

Десятичное число

Номер разряда С
Перенос      
1-е слагаемое  
2-е слагаемое      
Сумма  
                           

Примечание. Значение бита переноса С в результате не учитывается.

 

Ответ: при сложении десятичных чисел 25510 + 110 получается 25610, которое не входит в диапазон восьмиразрядной сетки 0 … 25510. Поэтому результат в двоичной системе 000000002 получается неверный из-за переполнения восьмиразрядной сетки. Для получения правильного результата необходимы вычисления с двойной точностью, то есть в шестнадцатиразрядной сетке.

 

Пример: Сложить два числа 25510 + 110 в шестнадцатиразрядной сетке. Порядок выполнения арифметического сложения двоичных чисел в шестнадцатиразрядной сетке приведен в табл. 2.20.3.

 

Табл.2.20.3.                        Арифметическое сложение двух чисел 25510 + 110

Система счисления  

Двоичное число

Номер разряда С
Перенос
1-е слагаемое  
2-е слагаемое  
Сумма  

 

Ответ: при сложении десятичных чисел 25510 + 110 получается 25610, которое входит в диапазон шестнадцатиразрядной сетки 0 … 6553510. Поэтому результат в двоичной системе получается верный 0000 0001 0000 00002 = 25610.

 

Пример: Сложить два числа -110 + 110 в восьмиразрядной сетке. Порядок выполнения арифметического сложения двоичных чисел в восьмиразрядной сетке приведен в табл. 2.20.4.

 

Табл.2.20.4.                        Арифметическое сложение двух чисел -110 + 110

Система счисления

Двоичное число

Десятичное число
Номер разряда СF
Перенос  
1-е слагаемое   -1
2-е слагаемое   +1
Сумма  

Примечание. СF – разряд переноса (заема). Значение бита переноса СF в результате не учитывается.

 

Ответ: при сложении десятичных чисел -110 + 110 получается 010, которое входит в диапазон восьмиразрядной сетки -12810 … 0 … +12710. Результат 0000 00002 верный.

 

 2.4.1.2. Арифметическое сложение шестнадцатеричных чисел

 

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

 

Пример:Выполнить сложение шестнадцатеричных чисел 000Eh + 0001h. Результат представить в шестнадцатиразрядной сетке.

Операция Комментарий
000Eh 0001h ------- 000Fh Сложение младших разрядов: Eh + 1h = 1410 + 110. Число 1510 не превышает старший символ Fh = 1510, поэтому не возникает переполнения разряда и переноса единицы в следующий (более старший левый) разряд. Результат:  1510 = Fh.

Ответ: 000Fh + 0001h = 0010h.

 

Пример: Выполнить сложение шестнадцатеричных чисел 000Fh + 0001h. Результат представить в шестнадцатиразрядной сетке.

Операция Комментарий
1 000Fh 0001h ------- 0010h Сложение младших разрядов: Fh + 1h = 1510 + 110 = 1610. Число 1610 превышает старший символ Fh = 1510, поэтому возникает переполнение разряда и перенос единицы в следующий (более старший левый) разряд. В текущем разряде остается разность 1610 – 1610 = 0. Результат:  1610 = 10h.

Ответ: 000Fh + 0001h = 0010h.

 

Пример: Выполнить сложение шестнадцатеричных чисел 000Fh + 000Fh. Результат представить в шестнадцатиразрядной сетке.

Операция Комментарий
1 000Fh 000Fh ------- 001Еh Сложение младших разрядов: Fh + Fh = 1510 + 1510 = 3010. Число 3010 превышает старший символ Fh = 1510, поэтому возникает переполнение разряда и перенос единицы в следующий (более старший левый) разряд. В текущем разряде остается разность 3010 – 1610 = 1410 = Еh. Результат:  1610 = 10h.

Ответ: 000Fh + 000Fh = 000Еh.

 

Пример: Выполнить сложение шестнадцатеричных чисел 7FFFh+0001h в формате без знака. Результат представить в шестнадцатиразрядной сетке. Выполнить верификацию результата.

Операция Комментарий
7FFFh 0001h ------- 8000h Результат:  8000h = 3276810. Анализ: полученный результат формате без знака входит в диапазон         0 … 6553510 или 0000h … FFFFh.

Ответ: 7FFFh + 0001h = 8000h – верный, так как результат формате без знака входит в диапазон    0 … 6553510 или 0000h … FFFFh.

 

Пример: Выполнить сложение шестнадцатеричных чисел 7FFFh+0001h в формате со знаком. Результат представить в шестнадцатиразрядной сетке. Выполнить верификацию результата.

Операция Комментарий
7FFFh 0001h ------- 8000h Результат:  8000h = 3276810. Анализ: полученный результат формате со знаком не входит в диапазон    -32768 … +3276710 или 8000h … 7FFFh. Произошло переполнение разрядной сетки в дополнительном коде.

Ответ: 7FFFh + 0001h = 8000h – не верный, так как результат формате со знаком не входит в диапазон -32768 … +3276710 или 8000h … 7FFFh и произошло переполнение шестнадцатиразрядной сетки в дополнительном коде.

 

Пример: Выполнить сложение шестнадцатеричных чисел FFFFh+0001h в формате без знака. Результат представить в шестнадцатиразрядной сетке. Выполнить верификацию результата.

Операция Комментарий
1111h FFFFh 0001h ------- 0000h Результат:  0000h = 010 (перенос из старшего разряда не учитывается). Анализ: FFFFh + 0001h  = 6553610 +110 = 6553610 ≠ 0000h. Полученный результат 6553610 формате без знака не входит в диапазон 0 … 6553510 или 0000h … FFFFh. Произошло переполнение шестнадцатиразрядной сетки.

Ответ: 0000h – не верный, так как результат формате без знакf не входит в диапазон -0 … 6553510 (0000h … FFFFh) и произошло переполнение шестнадцатиразрядной сетки.

 

Пример: Выполнить сложение шестнадцатеричных чисел FFFFh+0001h в формате со знаком. Результат представить в шестнадцатиразрядной сетке. Выполнить верификацию результата.

Операция Комментарий
1111h FFFFh 0001h ------- 0000h Результат:  0000h = 010 (перенос из старшего разряда не учитывается). Анализ: FFFFh + 0001h = -110 +110 = 010 = 0000h. Полученный результат 010 формате со знаком входит в диапазон -32768 … +3276710 или 8000h … 7FFFh.

Ответ: 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→ 1+1→ ↓ 1+1→ ↓ 1+1→ ↓ 1+1 ↓      
Расчетный заем      
Уменьшаемое 1→0
Вычитаемое
Разность

Примечание.

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
Расчетный заем  
Уменьшаемое  
Вычитаемое  
Разность   -1

Примечание. С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.                              Арифметическое умножение двух двоичных чисел

Двоичная

Десятичная

Комментарий
Номер разряда
        Множимое
          Множитель
        Умножение
    Умножение и сдвиг влево на 1
  - - - Умножение и сдвиг влево на 2
- - - Умножение и сдвиг влево на 3
Произведение

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



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.