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

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

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

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

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

textual
Листинг программы
type
   TInt=word;
 
function convert(const a:Tint):TInt;
begin
  if a<0
    then convert:=((not a) or (high(Tint) div 2)) + 1
  else convert:=a;
end;
 
function reconvert(const a:Tint):Integer;
begin
  if a>(high(Tint) div 2) then
   begin
     reconvert:=-(high(Tint)-a)-1;
   end
   else reconvert:=a;
end;
 
var
 a,b:TInt;
begin
  a:=convert(10);
  b:=convert(-20);
 
  writeln(reconvert(a),' ', reconvert(b));
  writeln(reconvert(a+b),' ', reconvert(a-b));
  readln;
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
Похожие ответы