- •2. Арифметические основы микропроцессорной техники
- •2.1. Системы счисления
- •2.2. Перевод из одной системы счисления в другую
- •2.2.1. Перевод целого десятичного числа в двоичную систему счисления
- •2.2.4. Перевод целого двоичного числа в шестнадцатеричную систему счисления
- •2.2.5. Перевод целого шестнадцатеричного числа в двоичную систему счисления
- •2.2.6. Перевод целого шестнадцатеричного числа в десятичную систему счисления
- •2.2.7. Перевод дробного десятичного числа в двоичную систему счисления
- •2.3. Представление информации в вычислительно технике
- •2.2.8. Перевод дробного двоичного числа в десятичную систему счисления
- •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.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 в формате без знака. Результат представить в шестнадцатиразрядной сетке. Выполнить верификацию результата.
Операция |
Комментарий |
111 7FFFh 0001h ------- 8000h |
Результат: 8000h = 3276810. Анализ: полученный результат формате без знака входит в диапазон 0 … 6553510 или 0000h … FFFFh. |
Ответ: 7FFFh + 0001h = 8000h – верный, так как результат формате без знака входит в диапазон 0 … 6553510 или 0000h … FFFFh.
Пример: Выполнить сложение шестнадцатеричных чисел 7FFFh+0001h в формате со знаком. Результат представить в шестнадцатиразрядной сетке. Выполнить верификацию результата.
Операция |
Комментарий |
111 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.
