Сложение (вычитание) двоичных чисел в дополнительном коде - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

Сложение (вычитание) двоичных чисел в дополнительном коде.Можно не писать нахождение дополнительного кода

Решение задачи: «Сложение (вычитание) двоичных чисел в дополнительном коде»

textual
Листинг программы
  1. type
  2.    TInt=word;
  3.  
  4. function convert(const a:Tint):TInt;
  5. begin
  6.   if a<0
  7.     then convert:=((not a) or (high(Tint) div 2)) + 1
  8.   else convert:=a;
  9. end;
  10.  
  11. function reconvert(const a:Tint):Integer;
  12. begin
  13.   if a>(high(Tint) div 2) then
  14.    begin
  15.      reconvert:=-(high(Tint)-a)-1;
  16.    end
  17.    else reconvert:=a;
  18. end;
  19.  
  20. var
  21.  a,b:TInt;
  22. begin
  23.   a:=convert(10);
  24.   b:=convert(-20);
  25.  
  26.   writeln(reconvert(a),' ', reconvert(b));
  27.   writeln(reconvert(a+b),' ', reconvert(a-b));
  28.   readln;
  29. end.

Объяснение кода листинга программы

  1. Объявление типа данных TInt, который представляет собой слово (word).
  2. Определение функции convert, которая принимает на вход значение типа TInt и возвращает значение типа TInt. Функция выполняет преобразование двоичного числа из дополнительного кода в обычный.
  3. В функции convert используется условная конструкция if-then для определения знака числа a. Если число отрицательное, то выполняется преобразование в положительное число с помощью операции наивысший бит (high) делить на 2 и операции или с нулем. К полученному результату добавляется единица. Если число положительное, то оно просто возвращается.
  4. Определение функции reconvert, которая принимает на вход значение типа TInt и возвращает целое число. Функция выполняет обратное преобразование двоичного числа из обычного кода в дополнительный.
  5. В функции reconvert используется условная конструкция if-then для определения знака числа a. Если число больше половины от наивысший бит (high) делить на 2, то выполняется преобразование в отрицательное число с помощью операции наивысший бит (high) минус a и операции делить на -1. К полученному результату добавляется единица. Если число меньше или равно половине от наивысший бит (high) делить на 2, то оно просто возвращается.
  6. Объявление переменных a и b типа TInt.
  7. Присваивание переменной a значение функции convert, которая преобразует число 10 из дополнительного кода в обычный.
  8. Присваивание переменной b значение функции convert, которая преобразует число -20 из дополнительного кода в обычный.
  9. Вывод значения переменной reconvert для a.
  10. Вывод значения переменной reconvert для b.
  11. Вывод значения суммы a и b после преобразования в дополнительный код.
  12. Вывод значения разности a и b после преобразования в дополнительный код.
  13. Чтение значения из стандартного ввода с помощью функции readln.
  14. Конец программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.5 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы