Реферат Курсовая Конспект
Логічні операції - раздел Образование, Лабораторна Робота 2 ...
|
Лабораторна робота 2
ЗОБРАЖЕННЯ чисел в оперативній пам’яті.
Логічні операції
Мета роботи
У результаті виконання лабораторної роботи:
· навчитись зображувати цілі додатні та від’ємні числа в двійковій системі числення;
· навчитись виконувати побітові логічні операції над двійковими числами.
Теми для попереднього пророблення
2.2.1. Зображення двійкових чисел у прямому, зворотному та додатковому кодах.
2.2.2. Особливості двійкового зображення цілих додатних і від’ємних чисел.
2.2.3.Виконання логічних операцій над бітами двійкового числа.
Перевірка за допомогою демонстраційної програми правильності результатів, отриманих під час виконання індивідуального завдання у відповідності до п.2.4
2.5.1.Спочатку треба виконати всі дії, передбачені в п.2.4, для свого індивідуального завдання (номери бітів і необхідні маски вибрати самостійно).
2.5.2.Перевірити правильність отриманих результатів за допомогою демонстраційної програми, текст якої розміщений нижче.
2.5.3.Демонстраційну програму треба запустити на виконання в одному з середовищ, яке підтримує програмування на мові Pascal.
2.5.4. Текст демонстраційної програми.
{ Виконання побітових логічних операцій }
program log_operac;
uses crt;
var
val,not_val,mask :byte;
i,b :byte;
d :char;
begin
while true do
begin
clrscr;
textcolor(13);
writeln('Ограничения:');
write('- эта программа работает только с целыми 1-байтовыми числами ');
writeln('со знаком или без');
writeln('- вводите целые десятичные числа со знаком или без ');
writeln(' из диапазонов -128 - +127 и 0-255');
writeln('- вводите номер бита из диапазона 0-7');
writeln;
textcolor(15);
write('Введите целое десятичное число со знаком или без:');
read(val);
write('bin:',' ':3);
{вывод на экран в двоичной форме}
for i:=7 downto 0 do
write(ord(((1 shl i) and val)<>0):2);
writeln(' ');
not_val:=0;
{инвертирование}
for i:=7 downto 0 do
begin
if ((1 shl i)and val)=0 then
not_val:=not_val+(1 shl i);
end;
{вывод на экран инвертированного значения }
write('not:',' ':3);
for i:=7 downto 0 do
write(ord(((1 shl i) and not_val)<>0):2);
write(#10#13'Установить бит.',#10#13,'Номер бита:');
readln(b);
write(#10#13,' ':7);
mask:=trunc(exp(b*ln(2))); {формирование маски}
{вывод на экран числа}
for i:=7 downto 0 do
write(ord(((1 shl i) and val)<>0):2);
write(#10#13'or'#10#13,' ':7);
{вывод маски на экран}
for i:=7 downto 0 do
write(ord(((1 shl i) and mask)<>0):2);
{вывод результата наложения маски}
write(#10#13,' ':7);
for i:=7 downto 0 do
write(ord((( ((1 shl i) and mask)<>0))
or (((1 shl i) and val)<>0)):2);
write(#10#13'Определение значения бита.',#10#13,'Номер бита:');
readln(b);
write(#10#13,' ':7);
mask:=trunc(exp(b*ln(2)));{формирование маски}
{вывод на экран числа}
for i:=7 downto 0 do
write(ord(((1 shl i) and val)<>0):2);
write(#10#13'and'#10#13,' ':7);
{вывод маски на экран}
for i:=7 downto 0 do
write(ord(((1 shl i) and mask)<>0):2);
write(#10#13,' ':7);
{вывод результата наложения маски}
for i:=7 downto 0 do
write(ord((( ((1 shl i) and mask)<>0)) and (((1 shl i) and val)<>0)):2);
{определяем, равен ли результат 0}
if (((1 shl b) and mask)<>0) and (( (1 shl b) and val)<>0) then write(' = 1')
else write(' = 0');
write(#10#13'Сбросить бит.',#10#13,'Номер бита:');
readln(b);
write(#10#13,' ':7);
mask:=255-trunc(exp(b*ln(2)));{формирование маски}
{вывод на экран числа}
for i:=7 downto 0 do
write(ord(((1 shl i) and val)<>0):2);
write(#10#13'and'#10#13,' ':7);
{вывод маски на экран}
for i:=7 downto 0 do
write(ord(((1 shl i) and mask)<>0):2);
write(#10#13,' ':7);
{вывод результата наложения маски}
for i:=7 downto 0 do
write(ord((( ((1 shl i) and mask)<>0)) and (((1 shl i) and val)<>0)):2);
write(#10#13'Инвертировать бит.',#10#13,'Номер бита:');
readln(b);
write(#10#13,' ':7);
mask:=trunc(exp(b*ln(2)));{формирование маски}
{вывод на экран числа}
for i:=7 downto 0 do
write(ord(((1 shl i) and val)<>0):2);
write(#10#13'xor'#10#13,' ':7);
{вывод маски на экран}
for i:=7 downto 0 do
write(ord(((1 shl i) and mask)<>0):2);
{вывод результата наложения маски}
write(#10#13,' ':7);
for i:=7 downto 0 do
write(ord((( ((1 shl i) and mask)<>0)) xor (((1 shl i) and val)<>0)):2);
gotoxy(30,38);
textcolor(15);
writeln('Нажмите: Enter - чтобы продолжить и ');
write(' 1 - чтобы выйти');
d:=readkey;
if (d='1') then halt;
end;
end.
– Конец работы –
Используемые теги: логічні, операції0.048
Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Логічні операції
Если этот материал оказался полезным для Вас, Вы можете сохранить его на свою страничку в социальных сетях:
Твитнуть |
Новости и инфо для студентов