0000 0001 0101 0001₂ = 151₁₆ = 1×16²+5×16+1 = 256+80+1 = 337₁₀ Это прямой код числа, поскольку самый старший (левый) разряд равен нулю.
1111 1111 1100 1000 - это дополнительный код отрицательного числа, поскольку старший разряд единичный. Далее мы этот разряд не рассматриваем. а) Инвертируем разряды 000 0000 0011 0111 б) Прибавляем к полученному числу единицу 000 0000 0011 1000 в) Переводим в десятичную систему и снабжаем знаком "минус" -38₁₆ = -(3×16+8) = -56₁₀
Program nd; function nod(n,m: integer): integer; begin while(n<>0) and (m<>0) do begin if n>=m then n:=n mod m else m:=m mod n; end; nod:=m+n; end; var m1,m2,n1,n2,t,ch,zn: integer; begin write('введите числитель и знаменатель 1 дроби через пробел: '); readln(m1,n1); write('введите числитель и знаменатель 2 дроби через пробел: '); readln(m2,n2); ch:=(n2*m1+m2*n1) div nod(n2*m1+m2*n1,n1*n2); zn:=(n1*n2) div nod(n2*m1+m2*n1,n1*n2); write(m1,'/',n1,' + ',m2,'/',n2,' = '); if zn=1 then write(ch) else write(ch,'/',zn); end.
Объяснение: сделала на угад , что к чему подходит , правильно