Реферат Курсовая Конспект
Вміти отримувати результати завдяки використанню машинного алгоритму множення цілих двійкових чисел - раздел Образование, Лабораторна Робота 5 ...
|
Лабораторна робота 5
МНОЖЕННЯ ЦІЛИХ ДВІЙКОВИХ ЧИСЕЛ
Мета роботи
У результаті виконання лабораторної роботи:
· вміти реалізовувати множення цілих двійкових чисел;
· вміти отримувати результати завдяки використанню машинного алгоритму множення цілих двійкових чисел.
Теми для попереднього пророблення
5.2.1.Лінійні і циклічні зсуви; використання стану ознаки CF, яка міститься в регістрі ознак процесора.
5.2.2. Переведення цілих чисел із 10-ї системи числення в 2-у і навпаки.
5.2.3. Отримання двійкових прямого (ПК) і додаткового (ДК) кодів.
Перевірка за допомогою демонстраційної програми правильності результатів, отриманих під час виконання індивідуального завдання у відповідності до п.5.4
5.5.1. Спочатку треба вручну для всіх комбінацій знаків у чисел отримати результати для свого індивідуального завдання, як це зроблено в прикладах у п.4.3.
5.5.2. Перевірити правильність отриманих у п.5.5.1 результатів за допомогою демонстраційної програми, текст якої розміщений нижче.
5.5.3. Демонстраційну програму треба запустити на виконання в одному з середовищ, яке підтримує програмування на мові Pascal.
5.5.4. Текст демонстраційної програми.
program umnozenie;
uses crt;
var
a,b:integer;
a_pr,b_pr:word;
a_dk,b_dk:word;
d:char;
function plusdk(a,b:word):word; {Сложение в дополнительном коде}
var
trans:word; {Бит переноса}
digit:word; {Текущий бит}
result:word; {Нужна для хранения промежуточного результата }
{при вычислении бита переноса}
c:word; {Сумма}
i:byte; {Счетчик}
begin
trans:=0;
for i:=0 to 15 do begin
digit:=(a and (1 shl i)) xor (b and (1 shl i)) xor (trans shl i);
if digit=0 then c:=c and (65535 xor (1 shl i))
else c:=c or (1 shl i);
result:=(a and (1 shl i))and(b and(1 shl i));
result:=result or ((b and(1 shl i))and(trans shl i));
result:=result or ((a and (1 shl i))and(trans shl i));
if result<>0 then trans:=1 else trans:=0;
end;
plusdk:=c; {Возвращение результата}
end;
function bdtos(a:word):string; {Преобразование битов числа в строку}
var
flag:boolean;
i:byte;
s:string;
begin
flag:=false;
s:='';
for i:=15 downto 0 do
begin
if ((1 shl i) and a)>0 then flag:=true;
if flag=true then s:=s+chr(ord(((1 shl i) and a)<>0)+48);
end;
if flag=false then s:='0';
bdtos:=s;
end;
function prtoi(a:word):integer; {Преобразование из прямого кода в integer}
begin
if a<32768 then prtoi:=a
else prtoi:=-(a and 32767);
end;
function itopr(a:integer):word; {Преобразование из integer в прямой код}
begin
if a>=0 then itopr:=a
else itopr:=abs(a) or (1 shl 15);
end;
function prdk(a:word):word; {Преобразование из прямого кода в дополнительный и наоборот}
begin
if a<32768 then prdk:=a
else prdk:=plusdk((not a) or (1 shl 15),1);
end;
function multdk(a,b:word):word;
var
c:word; {Результат}
i:byte; {Счетчик}
begin
c:=0;
for i:=0 to 14 do begin {Умножение на незнаковую часть В}
if (b and (1 shl i))<>0 then c:=plusdk(c,a);
a:=a shl 1;
end;
if (b and (1 shl 15))<>0 then {Умножение на знаковый бит В}
begin
a:=plusdk(not a,1); {Коррекция}
c:=plusdk(c,a);
end;
multdk:=c;
end;
begin
while true do
begin
clrscr;
textcolor(13);
writeln('Ограничения:');
writeln;
textcolor(15);
write('Введите A и B через пробел: ');
readln(a,b);
a_pr:=itopr(a);
b_pr:=itopr(b);
a_dk:=prdk(a_pr);
b_dk:=prdk(b_pr);
writeln(' [A]пк = ',bdtos(a_pr));
writeln(' [B]пк = ',bdtos(b_pr));
writeln(' [A]дк = ',bdtos(a_dk));
writeln(' [B]дк = ',bdtos(b_dk));
writeln('дк [A]дк*[B]дк = ',bdtos(multdk(a_dk,b_dk)));
writeln('пк [A]пк*[B]пк = ',bdtos(prdk(multdk(a_dk,b_dk))));
writeln('10 [A]*[B] = ',prtoi(prdk(multdk(a_dk,b_dk))));
gotoxy(30,25);
textcolor(15);
writeln('Нажмите: Enter - чтобы продолжить и ');
write(' 1 - чтобы выйти');
d:=readkey;
if (d='1') then halt;
end;
end.
Контрольні запитання
1. Особливості множення цілих двійкових чисел із знаком в ПК і ДК.
2. Що означає термін “часткова сума”?
3. Якщо множене або множник являється від’ємним числом, що треба мати на увазі при виконанні операції множення?
4. Як враховується стан ознаки CF регістра ознак процесора при виконанні команд циклічного зсуву?
– Конец работы –
Используемые теги: Вміти, отримувати, Результати, завдяки, використанню, машинного, алгоритму, Множення, цілих, двійкових, чисел0.123
Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Вміти отримувати результати завдяки використанню машинного алгоритму множення цілих двійкових чисел
Если этот материал оказался полезным для Вас, Вы можете сохранить его на свою страничку в социальных сетях:
Твитнуть |
Новости и инфо для студентов