рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

МАШИННІ КОДИ. ДОДАВАННЯ ТА ВІДНІМАННЯ ДРОБОВИХ ДВІЙКОВИХ ЧИСЕЛ У ФОРМАТІ З ПЛАВАЮЧОЮ КОМОЮ

МАШИННІ КОДИ. ДОДАВАННЯ ТА ВІДНІМАННЯ ДРОБОВИХ ДВІЙКОВИХ ЧИСЕЛ У ФОРМАТІ З ПЛАВАЮЧОЮ КОМОЮ - раздел Геология, Лабораторна Робота 4 ...

Лабораторна робота 4

МАШИННІ КОДИ. ДОДАВАННЯ ТА ВІДНІМАННЯ ДРОБОВИХ ДВІЙКОВИХ ЧИСЕЛ У ФОРМАТІ З ПЛАВАЮЧОЮ КОМОЮ

 

Мета роботи

У результаті виконання лабораторної роботи:

· вміти використовувати зображення двійкових чисел у форматі з плаваючою комою;

· набути практичних навичкок під час виконання операцій додавання та віднімання двійкових чисел у форматі з плаваючою комою.

 

Теми для попереднього пророблення

4.2.2. Переведення дробових чисел із десяткової системи числення в двійкову і навпаки. 4.2.3. Використання поля довжиною 1 байт для зображення цілих двійкових… 4.2.4. Зображення цілих двійкових чисел у зворотному та додатковому коді.

Завдання до лабораторної роботи

  Таблиця 4.1 – Вихідні дані для виконання лабораторної роботи …

Отримані двійкові числа A2 і B2 подані у форматі з плаваючою комою в прямому (ПК) коді – будемо мати [A] пк і [B]пк. Вирівняти порядки і отримати зворотний (ЗК) і додатковий (ДК) коди – будемо мати відповідно [A]зк, [B]зк, [A] дк і [B]дк. Прямий, зворотний і додатковий коди отримати для +A10 і –A10, а також для +B10 і –B10.

4.3.3. Виконати вручну додавання (віднімання) мантис двійкових чисел [A] дк і [B]дк в додатковому модифікованому коді. Додавання виконати для різних комбінацій знаків чисел [A] дк і [B]дк, а саме для (+,+), (+,–), (–,–) і (–,+).

4.3.4.Виконавши нормалізацію мантиси результату додавання, коли в цьому є необхідність, відтворити результат додавання в ДК, ЗК і ПК, а також у двійковому з фіксованою комою і десятковому кодах.

4.3.5. Для всіх комбінацій значень знаків у A10 і B10 отримати результати додавання (віднімання) цих чисел шляхом запускання демонстраційної програми. Порівняти результати роботи демонстраційної програми з результатами, отриманими вручну.

4.3.6. При незбігу результатів, отриманих у пп.4.3.3 і 4.3.4, з результатами, отриманими в п.4.3.5, знайти і усунути помилки у власних розрахунках.

 

Хід отримання результатів

Зображення чисел у форматі з плаваючою комою

      Рис. 4.1 Один із форматів зображення чисел з плаваючою комою

Правила додавання (віднімання) чисел у форматі з плаваючою комою

1) Треба виконати операцію віднімання над значеннями порядків вихідних чисел A[пк] і B[пк]. Якщо різниця порядків не дорівнює нулю, мають бути… 3) При вирівнюванні порядків вміст розрядів мантиси числа з меншим порядком… 4) Треба вирівняти розрядну сітку мантиси того числа, у якого менша кількість розрядів в мантисі – в мантису цього…

Перевірка за допомогою демонстраційної програми правильності результатів, отриманих під час виконання індивідуального завдання у відповідності до п.4.4.

4.5.1. Спочатку треба вручну отримати результати для свого індивідуального завдання, як зроблено в прикладі із п.4.4.2.

Але в демонстраційній програмі реалізоване дещо інше зображення двійкових чисел у форматі з плаваючою комою, а саме в 3‑байтовому полі (зліва направо):

– в старшому біті знак мантиси, тобто числа;

– в 7-ми наступних бітах – порядок (без знака);

– після крапки, яка відділяє на екрані порядок від мантиси, нормалізоване зображення мантиси (в двох байтах).

Тому виконання індивідуального завдання у відповідності до п.4.4.2 має бути орієнтоване на подальше використання демонстраційної програми.

4.5.2. Перевірити правильність отриманих в п.4.5.1 результатів за допомогою демонстраційної програми, текст якої розміщений нижче.

4.5.3. Демонстраційну програму треба запустити на виконання в одному з середовищ, яке підтримує програмування на мові Pascal.

4.5.4. Текст демонстраційної програми.

 

{сложение чисел в формате с плавающей точкой}

program plavaush;

uses crt;

var r:real; {результат сложения}

i,a_h,b_h,c_h:shortint; {-128..+127}

{а_h,b_h,c_h порядок двоичной записи чисел a, b, c}

a_l,b_l,c_l:word; {a_l,b_l,c_l мантисса двоичной записи}

p_b,p_a,t:byte; {p_b,p_a порядок чисел b и a}

f:boolean;

d:char;

 

Procedure shr_ab(var a:shortint;var b:word);

{линейный сдвиг вправо двоичной записи}

begin

for i:=1 to 15 do {shr b}

if (((1 shl i) and b)<>0) and (((1 shl (i-1)) and b)=0)

then b:=b+(1 shl (i-1)) else

if (((1 shl i) and b)=0) and (((1 shl (i-1)) and b)<>0)

then b:=b-(1 shl (i-1));

if ((1 shl 15) and b)<>0 then b:=b-(1 shl 15);

if odd(a) then b:=b+trunc(exp(15*ln(2)));

for i:=1 to 6 do {sar a}

if (((1 shl i) and a)<>0) and (((1 shl (i-1)) and a)=0)

then a:=a+(1 shl (i-1)) else

if (((1 shl i) and a)=0) and (((1 shl (i-1)) and a)<>0)

then a:=a-(1 shl (i-1));

if ((1 shl 6) and a)<>0 then a:=a-(1 shl 6);

end;

Procedure Write_ab(a:shortint;b:word);

{вывод на экран двоичной записи}

begin

for i:=7 downto 0 do

write(ord(((1 shl i) and a)<>0):2);

write('.');

for i:=15 downto 0 do

write(ord(((1 shl i) and b)<>0):2);

Writeln(' ');

end;

BEGIN

while true do

begin

clrscr;

textcolor(13);

writeln('Замечания:');

writeln('# Оба исходных числа вводите в формате: цц.цц / +цц.цц / -цц.цц');

writeln('# После ввода каждого исходного числа нажимайте Enter');

writeln('# На экране - слева направо:');

writeln(' - в старшем бите знак мантиссы, т.е. числа');

writeln(' - в 7-ми следующих битах - порядок без знака');

writeln(' - в двух байтах, после разделяющей точки - ');

writeln(' нормализованное представление мантиссы');

writeln;

textcolor(15);

 

{Ввод числа А}

Write('Введите число A = ');

Read(r);

 

{Перевод в форму с фиксированной точкой}

a_h:=abs(trunc(r));

if r<0 then a_h:=a_h + trunc(exp(7*ln(2)));

r:=frac(r);

i:=15;

while (r<>0) and (i<>0) do

begin

r:=r*2;

if trunc(r) <>0 then a_l:=a_l + trunc(exp(i*ln(2)));

dec(i);

r:=frac(r);

end;

 

{Ввод числа B}

Write('Введите число B = ');

Read(r);

{Перевод в форму с фиксированной точкой}

b_h:=abs(trunc(r));

if r<0 then b_h:=b_h+trunc(exp(7*ln(2)));

r:=frac(r);

i:=15;

while (r<>0) and (i<>0) do

begin

r:=r*2;

if trunc(r) <>0 then b_l:=b_l+trunc(exp(i*ln(2)));

dec(i);

r:=frac(r);

end;

for i:=6 downto 0 do {нахождение порядка числа А}

if ord((1 shl i) and a_h)<>0 then begin p_a:=i+1; break; end;

 

{Перевод в формат с плавающей точкой}

t:=p_a;

while t<>0 do begin shr_ab(a_h,a_l); dec(t); end;

for i:=6 downto 0 do {нахождение порядка числа В}

if ord((1 shl i) and b_h)<>0 then begin p_b:=i+1; break; end;

 

{Перевод в формат с плавающей точкой}

t:=p_b;

while t<>0 do begin shr_ab(b_h,b_l); dec(t); end;

 

{указать порядок числа}

a_h:=a_h+p_a;

b_h:=b_h+p_b;

Write(#10#13,'A[пк]=');

Write_ab(a_h,a_l);

Write('B[пк]=');

Write_ab(b_h,b_l);

 

{Выравнивание порядков чисел}

if p_a>p_b then begin

t:=p_a-p_b;

while t<>0 do

begin

for i:=1 to 15 do {shr b_l}

if (((1 shl i) and b_l)<>0) and (((1 shl (i-1)) and b_l)=0)

then b_l:=b_l+(1 shl (i-1)) else

if (((1 shl i) and b_l)=0) and (((1 shl (i-1)) and b_l)<>0)

then b_l:=b_l-(1 shl (i-1));

if ((1 shl 15) and b_l)<>0 then b_l:=b_l-(1 shl 15);

inc(b_h);dec(t);

end;

Write(' Выравнивание порядков.');

end

else if p_a<p_b then begin

t:=p_b-p_a;

while t<>0 do

begin

for i:=1 to 15 do {shr a_l}

if (((1 shl i) and a_l)<>0) and (((1 shl (i-1)) and a_l)=0)

then a_l:=a_l+(1 shl (i-1)) else

if (((1 shl i) and a_l)=0) and (((1 shl (i-1)) and a_l)<>0)

then a_l:=a_l-(1 shl (i-1));

if ((1 shl 15) and a_l)<>0 then a_l:=a_l-(1 shl 15);

inc(a_h);dec(t);

end;

Write(' Выравнивание порядков.');

end;

 

{Перевод чисел в обратный код}

if a_h<0 then

for i:=15 downto 0 do

begin {invert a_l}

if ((1 shl i)and a_l)=0 then

a_l:=a_l+(1 shl i) else a_l:=a_l-(1 shl i) ;

end;

if b_h<0 then

for i:=15 downto 0 do

begin {invert b_l}

if ((1 shl i)and b_l)=0 then

b_l:=b_l+(1 shl i) else b_l:=b_l-(1 shl i);

end;

 

Write(#10#13,'A[ок]=');

Write_ab(a_h,a_l);

Write('B[ок]=');

Write_ab(b_h,b_l);

 

{Перевод в дополнительный код}

if a_h<0 then inc(a_l);

if b_h<0 then inc(b_l);

Write(#10#13,'A[дк]=');

Write_ab(a_h,a_l);

Write('B[дк]=');

Write_ab(b_h,b_l);

{сдвиг мантиссы на два разряда для работы с модифицированным кодом}

t:=2;

 

While t<>0 do begin

for i:=1 to 15 do {shr b_l}

if (((1 shl i) and b_l)<>0) and (((1 shl (i-1)) and b_l)=0)

then b_l:=b_l+(1 shl (i-1)) else

if (((1 shl i) and b_l)=0) and (((1 shl (i-1)) and b_l)<>0)

then b_l:=b_l-(1 shl (i-1));

if ((1 shl 15) and b_l)<>0 then b_l:=b_l-(1 shl 15);

for i:=1 to 15 do {shr a_l}

if (((1 shl i) and a_l)<>0) and (((1 shl (i-1)) and a_l)=0)

then a_l:=a_l+(1 shl (i-1)) else

if (((1 shl i) and a_l)=0) and (((1 shl (i-1)) and a_l)<>0)

then a_l:=a_l-(1 shl (i-1));

if ((1 shl 15) and a_l)<>0 then a_l:=a_l-(1 shl 15);

dec(t);

end;

{установить в знаковых разрядах 11, если число отрицательное}

if a_h<0 then a_l:=a_l or (1 shl 15) or (1 shl 14) ;

if b_h<0 then b_l:=b_l or (1 shl 15) or (1 shl 14) ;

 

{вывод на экран слагаемых}

Write(#10#13,'Aм = ');

for i:=15 downto 0 do begin

if i=13 then Write(' ':2);

write(ord(((1 shl i) and a_l)<>0):2); end;

Write(#10#13,'+':6,#10#13,'Bм = ');

for i:=15 downto 0 do begin

if i=13 then Write(' ':2);

write(ord(((1 shl i) and b_l)<>0):2); end;

for i:= 0 to 15 do {Сложение. f содержит бит переноса}

case ord(((1 shl i) and a_l)<>0)+ord(((1 shl i) and b_l)<>0)+ord(f) of

1:begin

c_l:=c_l or trunc(exp(i*ln(2)));

f:=false;

end;

2:f:=true;

3:begin

c_l:=c_l or trunc(exp(i*ln(2)));

f:=true;

end;

else

f:=false;

end;

c_h:=b_h;

{вывод результата сложения на экран}

if c_h<0 then c_h:=c_h-trunc(exp(7*ln(2)));

Write(#10#13,'Cм = ');

for i:=15 downto 0 do begin

if i=13 then Write(' ':2);

write(ord(((1 shl i) and c_l)<>0):2); end;

 

{если значения знаковых битов мантиссы не совпадают,

выполняется нормализация мантиссы}

if ord(((1 shl 15) and c_l)<>0) <> ord(((1 shl 14) and c_l)<>0) then begin

for i:=1 to 15 do {sar c_l}

if (((1 shl i) and c_l)<>0) and (((1 shl (i-1)) and c_l)=0)

then c_l:=c_l+(1 shl (i-1)) else

if (((1 shl i) and c_l)=0) and (((1 shl (i-1)) and c_l)<>0)

then c_l:=c_l-(1 shl (i-1));

{if ((1 shl 15) and c_l)<>0 then c_l:=c_l-(1 shl 15);}{????}

inc(c_h);

Write(#10#13' Нормализация мантиссы.');

end;

 

{если знаковые биты совпадают со старшим битом мантиссы, выполняется

нормализация мантиссы}

if (ord(((1 shl 15) and c_l)<>0)=ord(((1 shl 14) and c_l)<>0)) and

(ord(((1 shl 15) and c_l)<>0)=ord(((1 shl 13) and c_l)<>0)) then

begin

while (ord(((1 shl 15) and c_l)<>0)=ord(((1 shl 14) and c_l)<>0)) and

(ord(((1 shl 15) and c_l)<>0)=ord(((1 shl 13) and c_l)<>0)) do begin

for i:=14 downto 0 do

if (((1 shl i) and c_l)<>0) and (((1 shl (i+1)) and c_l)=0)

then c_l:=c_l+(1 shl (i+1)) else

if (((1 shl i) and c_l)=0) and (((1 shl (i+1)) and c_l)<>0)

then c_l:=c_l-(1 shl (i+1));

if odd(c_l) then dec(c_l);

dec(c_h);

end;

Write(#10#13' Нормализация мантиссы.');

end;

 

{перенос знака результата сложения в знаковый разряд числа}

if ((1 shl 15) and c_l)<>0 then c_h:=c_h+trunc(exp(7*ln(2)));

t:=2;

While t<>0 do begin

{удаление знаковых разрядов мантиссы}

for i:=14 downto 0 do

if (((1 shl i) and c_l)<>0) and (((1 shl (i+1)) and c_l)=0)

then c_l:=c_l+(1 shl (i+1)) else

if (((1 shl i) and c_l)=0) and (((1 shl (i+1)) and c_l)<>0)

then c_l:=c_l-(1 shl (i+1));

if odd(c_l) then dec(c_l);

dec(t);

end;

Write(#10#13,'C[дк]=');

Write_ab(c_h,c_l);

 

{Переход к обратному коду}

if c_h<0 then

for i:=15 downto 0 do

begin {invert c_l}

if ((1 shl i)and c_l)=0 then

c_l:=c_l+(1 shl i) else c_l:=c_l-(1 shl i) ;

end;

Write(#10#13,'C[ок]=');

Write_ab(c_h,c_l);

 

{Переход к прямому коду}

if c_h<0 then begin

f:=false;

b_l:=0;

for i:= 0 to 15 do {Сложение c_l+1. f содержит биты переносов}

case ord(((1 shl i) and c_l)<>0)+ord(((1 shl i) and 1)<>0)+ord(f) of

1:begin

b_l:=b_l or trunc(exp(i*ln(2)));

f:=false;

end;

2:f:=true;

3:begin

b_l:=b_l or trunc(exp(i*ln(2)));

f:=true;

end;

else

f:=false;

end;

c_l:=b_l;

if f then begin {если возникло переполнение, сдвинуть мантиссу и

увеличить порядок на 1}

for i:=1 to 15 do {sar c_l}

if (((1 shl i) and c_l)<>0) and (((1 shl (i-1)) and c_l)=0)

then c_l:=c_l+(1 shl (i-1)) else

if (((1 shl i) and c_l)=0) and (((1 shl (i-1)) and c_l)<>0)

then c_l:=c_l-(1 shl (i-1));

if ((1 shl 15) and c_l)=0 then c_l:=c_l+(1 shl 15); {starshii bit+}

inc(c_h);

end;

end;

Write(#10#13,'C[пк]=');

Write_ab(c_h,c_l);

r:=0; t:=0;

if ((1 shl 7) and c_h)<>0 then begin

c_h:=c_h-trunc(exp(7*ln(2))); {знак}

t:=1; end;

 

{Перевод в десятичную систему счисления}

for i:=0+abs(c_h) downto -15+abs(c_h) do

if ((1 shl (i+15-abs(c_h)) )and c_l)<>0 then

r:=r+exp((i-1)*ln(2));

if t=1 then r := -r;

Write(#10#13,'C= ',r:8:4);

a_l:=0; b_l:=0; c_l:=0;

gotoxy(30,35);

textcolor(15);

writeln('Нажмите: Enter - чтобы продолжить и ');

write(' 1 - чтобы выйти');

d:=readkey;

if (d='1') then halt;

end;

END.

Зміст звіту

4.6.2. Звіт може бути роздрукований. 4.6.3. Звіт виконують українською мовою. 4.6.4. У звіті мають бути вказані:

Контрольні запитання

2. Чи відрізняються прямий, зворотний і додатковий коди у додатного та у від’ємного числа? 3. Враховується чи ні одиниця переносу із старшого знакового розряду під час… 4. У чому особливість модифікованих кодів?

– Конец работы –

Используемые теги: машинні, коди, Додавання, віднімання, дробових, двійкових, чисел, форматі, плаваючою, комою0.13

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: МАШИННІ КОДИ. ДОДАВАННЯ ТА ВІДНІМАННЯ ДРОБОВИХ ДВІЙКОВИХ ЧИСЕЛ У ФОРМАТІ З ПЛАВАЮЧОЮ КОМОЮ

Что будем делать с полученным материалом:

Если этот материал оказался полезным для Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Еще рефераты, курсовые, дипломные работы на эту тему:

Для представления отрицательных чисел кроме ПК существует еще 3 формы: обратный код (ОК), дополнительный код (ДК) и смещенный код (СК
Алгебраические формы представления целых знаковых двоичных чисел в компьютере...

Тема: Переведення чисел із заданою точністю. Зображення чисел з фіксованою і плаваючою крапкою
Тема Переведення чисел із заданою точністю Зображення чисел з фіксованою і плаваючою крапкою... ТЕОРЕТИЧНІ ПОЛОЖЕННЯ Представлення чисел в... ЗАВДАННЯ Частина І Переведення чисел з заданою точністю...

Коды без памяти. Коды Хаффмена. Коды с памятью
Если S = { w1, w2, , wk } - префиксное множество, то можно определить некоторый вектор v(S) = ( L1, L2, , Lk ), состоящий из чисел, являющихся… Для него выполняется неравенство . (1) Это неравенство называется… Для него справедливо следующее утверждение: если S - какое-либо префиксное множество, то v(S) - вектор Крафта.

Тема: Переведення чисел. Доповнювальний, прямий і зворотній код. Операції над цілими числами у двійковій системі числення
Тема Переведення чисел Доповнювальний прямий і зворотній код Операції над цілими числами у двійковій системі... ТЕОРЕТИЧНІ ПОЛОЖЕННЯ Операції над цілими... Зауваження В ЕОМ операції віднімання множення ділення здійснюються за допомогою операції додавання Наприклад при...

Коды Фибоначи. Коды Грея
Число &#61654;2 =1,44… , которое представляет отношение диагонали к стороне квадрата и ряд других чисел.Особое иррациональное число &#61537;… Золотая пропорция обладает рядом уникальных свойств. Пропорция 1,61… Например, остатки от деления чисел Фибоначчи на 2 образуют последовательность: 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, и…

Языковой код. Переключение и смешение кодов
Объект и предмет социолингвистики... Социолингвистика и др смежные дисциплины Социолингвистика и... Язык как универсальное средство общения...

Вміти отримувати результати завдяки використанню машинного алгоритму множення цілих двійкових чисел
МНОЖЕННЯ ЦІЛИХ ДВІЙКОВИХ ЧИСЕЛ... Мета роботи У результаті виконання лабораторної роботи...

Лекція № 10 1. Способи представлення чисел. Числа з фіксованою та рухомою комою
Тема Представлення даних... План Способи представлення чисел Числа з фіксованою та рухомою комою Дії з двійковими числами...

Реферат на тему: Классификация помехоустойчивых кодов. Особенности практического кодирования КРАТКАЯ КЛАССИФИКАЦИЯ ПОМЕХОУСТОЙЧИВЫХ КОДОВ
кафедра РЭС... реферат на тему...

Представление двоичных чисел в машинах ЭВМ
К микросхема широкого применения после К М металлический корпус КМ ИМ... Элементы последовательной логики Раздел алгебры логики описывающий...

0.028
Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • По категориям
  • По работам