- •2. Арифметические основы микропроцессорной техники
- •2.1. Системы счисления
- •2.2. Перевод из одной системы счисления в другую
- •2.2.1. Перевод целого десятичного числа в двоичную систему счисления
- •2.2.4. Перевод целого двоичного числа в шестнадцатеричную систему счисления
- •2.2.5. Перевод целого шестнадцатеричного числа в двоичную систему счисления
- •2.2.6. Перевод целого шестнадцатеричного числа в десятичную систему счисления
- •2.2.7. Перевод дробного десятичного числа в двоичную систему счисления
- •2.2.8. Перевод дробного двоичного числа в десятичную систему счисления
- •2.3. Представление информации в вычислительно технике
- •2.3.1. Целые числа без знака (unsigned)
- •2.3.2. Целые числа со знаком (signed)
- •2.3.3. Числа с плавающей точкой (float)
- •2.3.4. Символьные данные (char)
- •2.3.5.2. Представление десятичного числа в двоично-десятичном неупакованном формате
- •2.3.5.3. Перевод bcd упакованного формата в десятичное число
- •2.3.5.4. Перевод bcd неупакованного формата в десятичное число
- •2.4. Арифметические операции
- •2.4.1. Арифметическое сложение
- •2.4.1.1. Арифметическое сложение двоичных чисел
- •2.4.1.2. Арифметическое сложение шестнадцатеричных чисел
- •2.4.2. Арифметическое вычитание
- •2.4.3. Арифметическое умножение
- •2.4.4. Арифметическое деление
- •2.5. Проверка результатов выполнения арифметических операций
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)=(023 + 022 + 121 + 020) (123 + 022 + 021 + 120) = 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
Система счисления |
|
Двоичное число |
Десятичное число |
|||||||||
Номер разряда |
С |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
1 |
0 |
|
Перенос |
0 |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
|
|
1-е слагаемое |
|
0 |
0 |
0 |
1 |
1 |
1 |
0 |
0 |
2 |
8 |
|
2-е слагаемое |
|
0 |
0 |
1 |
1 |
1 |
0 |
1 |
0 |
5 |
8 |
|
Сумма |
|
0 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
8 |
6 |
Примечание. С – это бит переноса из старшего седьмого разряда.
Ответ: 2810 + 5810 = 0001 11002 - 0011 10102 = 0101 01102 = 8610.
Пример: Сложить два числа 25510 + 110 в восьмиразрядной сетке. Порядок выполнения арифметического сложения двоичных чисел в восьмиразрядной сетке приведен в табл. 2.20.2.
Табл.2.20.2. Арифметическое сложение двух чисел 25510 + 110
Система счисления |
|
Двоичное число |
Десятичное число |
||||||||||
Номер разряда |
С |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
2 |
1 |
0 |
|
Перенос |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
|
|
|
|
1-е слагаемое |
|
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
2 |
5 |
5 |
|
2-е слагаемое |
|
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
|
|
1 |
|
Сумма |
|
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
2 |
5 |
6 |
Примечание. Значение бита переноса С в результате не учитывается.
Ответ: при сложении десятичных чисел 25510 + 110 получается 25610, которое не входит в диапазон восьмиразрядной сетки 0 … 25510. Поэтому результат в двоичной системе 000000002 получается неверный из-за переполнения восьмиразрядной сетки. Для получения правильного результата необходимы вычисления с двойной точностью, то есть в шестнадцатиразрядной сетке.
Пример: Сложить два числа 25510 + 110 в шестнадцатиразрядной сетке. Порядок выполнения арифметического сложения двоичных чисел в шестнадцатиразрядной сетке приведен в табл. 2.20.3.
Табл.2.20.3. Арифметическое сложение двух чисел 25510 + 110
Система счисления |
|
Двоичное число |
|||||||||||||||
Номер разряда |
С |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Перенос |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1-е слагаемое |
|
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
2-е слагаемое |
|
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
Сумма |
|
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
Ответ: при сложении десятичных чисел 25510 + 110 получается 25610, которое входит в диапазон шестнадцатиразрядной сетки 0 … 6553510. Поэтому результат в двоичной системе получается верный 0000 0001 0000 00002 = 25610.
Пример: Сложить два числа -110 + 110 в восьмиразрядной сетке. Порядок выполнения арифметического сложения двоичных чисел в восьмиразрядной сетке приведен в табл. 2.20.4.
Табл.2.20.4. Арифметическое сложение двух чисел -110 + 110
Система счисления |
Двоичное число |
Десятичное число |
||||||||
Номер разряда |
СF |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
0 |
Перенос |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
|
1-е слагаемое |
|
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
-1 |
2-е слагаемое |
|
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
+1 |
Сумма |
|
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
Примечание. СF – разряд переноса (заема). Значение бита переноса СF в результате не учитывается.
Ответ: при сложении десятичных чисел -110 + 110 получается 010, которое входит в диапазон восьмиразрядной сетки -12810 … 0 … +12710. Результат 0000 00002 верный.