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

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

Переведення цілих чисел із 10-ї системи числення в 2-у і навпаки.

Переведення цілих чисел із 10-ї системи числення в 2-у і навпаки. - раздел Образование, Лабораторна Робота 6 ...

Лабораторна робота 6

ДІленНя ДВІЙКОВИХ ЧИСЕЛ без вІДНОВЛЕННЯ І з вІДНОВЛЕННЯМ ЗАЛИШКУ

 

Мета роботи

У результаті виконання лабораторної роботи навчитись виконувати операції ділення з використанням двійкових кодів за схемами ділення без відновлення і з відновленням залишку.

 

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

6.2.1. Лінійні зсуви.

6.2.2. Переведення цілих чисел із 10-ї системи числення в 2-у і навпаки.

6.2.3. Отримання двійкових прямого (ПК) і додаткового (ДК) кодів.

6.2.4. Правила додавання двійкових цифр в i-му розряді двійкового числа з урахуванням можливого переносу із попереднього молодшого розряду.

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

Таблиця 6.1 – Вихідні дані для виконання лабораторної роботи № ва­рі­ан­та Вихідні числа для виконання операції ділення … Продовження таблиці 6.1 № ва­рі­ан­та Вихідні числа для…  

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

1) Вирівняти кількість розрядів у двійковому зображенні діленого A і дільника B ( для цього треба дописати незначущі нулі зліва в двійковому числі з… 2) Отримати додаткові коди для чисел: +A2, –A2, +B2 і –B2. 3) Цілій частині частки C присвоїти початкове значення, яке дорівнює 0.

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

6.5.1. Спочатку треба вручну для двох пар чисел отримати результати для свого індивідуального завдання, як це зроблено в прикладах у п.6.4.1 і п.6.4.2.

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

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

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

Ділення без відновлення залишку

program delen_bez_vost_ost;

uses crt;

const n:byte=4;{точность вычислений}

var A,B,_B,T,k:integer;{A,B - содержат прямой код}

{_B - это '-В' в дополнительном коде}

i,j:byte;

C,p,r:real; {результат}

z_a,z_b:boolean; {знак чисел А и В}

p_b,p_a,m:byte;

a_h,b_h,c_h:shortint;

a_l,b_l,c_l:word;

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;

procedure add(var a:integer;_b:integer); {сложение}

var t:integer;

p:word;

i:byte;

begin

p:=0;

T:=0;

for i:= 0 to 15 do {slogenie}

case ord(((1 shl i) and A)<>0)+ord(((1 shl i) and _B)<>0)+

ord(((1 shl i) and p)<>0) of

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

2:p:=p or trunc(exp((i+1)*ln(2)));

3:begin

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

p:=p or trunc(exp((i+1)*ln(2)));

end;

end;

A:=T;

end;

begin

while true do

begin

clrscr;

textcolor(13);

writeln('Ограничения:');

writeln('# Эта программа работает только с целыми числами, вводите их без знака');

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

writeln('# Вывод результата на экран - в 2-байтовом поле, слева направо:');

writeln(' - не допускайте переполнения разрядной сетки!');

writeln(' - для знака результата бит не зарезервирован!');

writeln(' - в старших битах - переведенная в двоичный код целая часть результата!');

writeln(' - в остальных битах - дробная часть результата!');

writeln;

textcolor(15);

writeln(' DELENIE BEZ VOSSTANOVLENIA OSTATKA');

writeln;

Write('A= ');

Readln(T);

write('bin:', ' ':3);

for k:=15 downto 0 do

write(ord(((1 shl k) and t) <>0):2);

writeln(' ');

if T<0 then z_a:=true; {знак}

T:=abs(T);

for i:=15 downto 0 do {представление в прямом коде}

if ord((1 shl i) and T)<>0 then A:=A + trunc(exp(i*ln(2)));

Write(#10#13,'B= ');

Readln(T);

write('bin:', ' ':3);

for k:=15 downto 0 do

write(ord(((1 shl k) and t) <>0):2);

writeln(' ');

if T<0 then z_b:=true; {знак}

T:=abs(T);

for i:=15 downto 0 do {представление в прямом коде}

if ord((1 shl i) and T)<>0 then B:=B + trunc(exp(i*ln(2)));

_B:=B;

if B>0 then _B:=_B + trunc(exp(15*ln(2))); {знак _B}

for i:=14 downto 0 do {инвертировать _B}

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

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

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

inc(_B);

{вычисление целой части результата}

While A>=0 do begin

Add(A,_B);

if A>=0 then c:=c+1;

end;

{деление без восстановления остатка}

for i:=1 to N do begin

for j:=14 downto 0 do {shl A}

if (((1 shl j) and A)<>0) and (((1 shl (j+1)) and A)=0)

then A:=A+(1 shl (j+1)) else

if (((1 shl j) and A)=0) and (((1 shl (j+1)) and A)<>0)

then A:=A-(1 shl (j+1));

if odd(A) then dec(A);

if A > 0 then ADD(A,_B) else ADD(A,B);

if A > 0 then C:=C + exp((-i)*ln(2)); {Ci=1}

end;

if z_a xor z_b then c:=-c; {знак результата}

Writeln(#10#13,'C= ',c:N+3:N);

r:=C;

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;

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

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

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

m:=p_a;

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

a_h:=a_h+p_a;

Write_ab(a_h,a_l);

a_h:=0; a_l:=0; b_h:=0; b_l:=0; c_h:=0; c_l:=0;

p_a:=0; p_b:=0; m:=0; C:=0; p:=0; r:=0;

T:=0; k:=0; A:=0; B:=0; _B:=0;

z_a:=true; z_b:=true;

gotoxy(30,25);

textcolor(15);

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

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

d:=readkey;

if (d='1') then halt;

end;

end.

 

Ділення з відновленням залишку

 

program delen_s_vost_ost;

uses crt;

const n:byte=4; {точность вычислений}

var A,B,_B,T,k:integer; {A,B - содержат прямой код}

{_B - это '-В' в дополнительном коде}

p_b,p_a,m:byte;

i,j:byte; {параметры цикла}

C,P,r:real; {результат}

z_a,z_b:boolean; {знак чисел А и В}

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

a_h,b_h,c_h:shortint;

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;

procedure add(var a:integer;_b:integer); {сложение}

var t:integer;

p:word;

i:byte;

begin

p:=0;

T:=0;

for i:= 0 to 15 do {slogenie}

case ord(((1 shl i) and A)<>0)+ord(((1 shl i) and _B)<>0)+

ord(((1 shl i) and p)<>0) of

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

2:p:=p or trunc(exp((i+1)*ln(2)));

3:begin

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

p:=p or trunc(exp((i+1)*ln(2)));

end;

end;

A:=T;

end;

begin

while true do

begin

clrscr;

textcolor(13);

writeln('Ограничения:');

writeln('# Эта программа работает только с целыми числами, вводите их без знака');

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

writeln('# Вывод результата на экран - в 2-байтовом поле, слева направо:');

writeln(' - не допускайте переполнения разрядной сетки!');

writeln(' - для знака результата бит не зарезервирован!');

writeln(' - в старших битах - переведенная в двоичный код целая часть результата!');

writeln(' - в остальных битах - дробная часть результата!');

writeln;

textcolor(15);

Writeln(' DELENIE S VOSSTANOVLENIEM OSTATKA ');

Writeln;

Write('A= ');

Readln(T);

write('bin:', ' ':3);

for k:=15 downto 0 do

write(ord(((1 shl k) and t) <>0):2);

writeln(' ');

if T<0 then z_a:=true; {знак}

T:=abs(T);

for i:=15 downto 0 do {представление в прямом коде}

if ord((1 shl i) and T)<>0 then A:=A + trunc(exp(i*ln(2)));

Write(#10#13,'B= ');

Readln(T);

write('bin:', ' ':3);

for k:=15 downto 0 do

write(ord(((1 shl k) and t) <>0):2);

writeln(' ');

if T<0 then z_b:=true;{знак}

T:=abs(T);

for i:=15 downto 0 do{представление в прямом коде}

if ord((1 shl i) and T)<>0 then B:=B + trunc(exp(i*ln(2)));

_B:=B;

if B>0 then _B:=_B + trunc(exp(15*ln(2))); {знак _B}

for i:=14 downto 0 do {инвертировать _B}

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

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

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

inc(_B);

{вычисление целой части результата}

While A>=0 do begin

Add(A,_B);

if A>=0 then c:=c+1;

end;

{деление с восстановлением остатка}

Add(A,B);

for i:=1 to N do begin

for j:=14 downto 0 do {shl A}

if (((1 shl j) and A)<>0) and (((1 shl (j+1)) and A)=0)

then A:=A+(1 shl (j+1)) else

if (((1 shl j) and A)=0) and (((1 shl (j+1)) and A)<>0)

then A:=A-(1 shl (j+1));

if odd(A) then dec(A);

ADD(A,_B); {А-В}

if A >= 0 then C:=C + exp((-i)*ln(2)) {Сi=1}

else ADD(A,B); {А+В}

end;

if z_a xor z_b then c:=-c; {знак результата}

Writeln(#10#13,'C= ',c:N+4:N);

r:=C;

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;

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

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

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

m:=p_a;

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

a_h:=a_h+p_a;

Write_ab(a_h,a_l);

a_h:=0; a_l:=0; b_h:=0; b_l:=0; c_h:=0; c_l:=0;

p_a:=0; p_b:=0; m:=0; C:=0; p:=0; r:=0;

T:=0; k:=0; A:=0; B:=0; _B:=0;

z_a:=true; z_b:=true;

gotoxy(30,25);

textcolor(15);

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

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

d:=readkey;

if (d='1') then halt;

end;

end.

 

Зміст звіту

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

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

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

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

Используемые теги: Переведення, цілих, чисел, 10-ї, системи, числення, 2-у, навпаки0.109

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Переведення цілих чисел із 10-ї системи числення в 2-у і навпаки.

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

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

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

Лекция 1. Тема: Операционная система. Определение. Уровни операционной системы. Функции операционных систем. 1. Понятие операционной системы
Понятие операционной системы... Причиной появления операционных систем была необходимость создания удобных в... Операционная система ОС это программное обеспечение которое реализует связь между прикладными программами и...

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

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

Непротиворечивая система аксиом называется независимой, если никакая из аксиом этой системы не является следствием других аксиом этой системы
При аксиоматическом построении теории по существу все утверж дения выводятся путем доказательства из аксиом Поэтому к системе аксиом предъявляются... Система аксиом называется непротиворечивой если из нее нельзя логически... Если система аксиом не обладает этим свойством она не может быть пригодной для обоснования научной теории...

Экспертные системы. Классификация экспертных систем. Разработка простейшей экспертной системы
Глава 2. Структура систем, основанных на знаниях. 1. Категории пользователей экспертных систем. 2.2. Подсистема приобретения знаний. 3. База… ЭС выдают советы, проводят анализ, дают консультации, ставят диагноз. Практическое применение ЭС на предприятиях способствует эффективности работы и повышению квалификации специалистов.

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

Виконати дослідження переводу чисел з десяткової в двійкову систему числення
Лабораторна робота Подання даних... Мета заняття... Виконати дослідження переводу чисел з десяткової в двійкову систему числення Дати їх внутрішнє машинне подання...

ТЕЛЕКОММУНИКАЦИОННЫЕ СИСТЕМЫ. СИГНАЛЫ И КАНАЛЫ ЭЛЕКТРИЧЕСКОЙ СВЯЗИ. СИСТЕМЫ СВЯЗИ С ЧАСТОТНЫМ РАЗДЕЛЕНИЕМ КАНАЛОВ. ЦИФРОВЫЕ СИСТЕМЫ ПЕРЕДАЧИ
Лабораторные работы часа... Практические занятия часа... Всего аудиторных занятий часов...

Микропроцессорные системы: система ДЦ-МПК, система "Юг"
Использован практический опыт внедрения линейных пунктов управления (ЛПУ) на 60 станциях в увязке с ЭЦ-4, ЭЦ-9, МРЦ-12, МРЦ-13. Выполнен переход на… В состав аппаратуры центрального пункта управления (ПУ) входят IBM-совместные… Круглосуточный режим работы аппаратных средств ПУ обеспечивается источниками бесперебойного питания, а также системой…

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