Вариант 9.
Задание 1
begin
a := 13;
a := not a and (a - $13);
b := $11;
rez := a - b;
writeln(rez);
end.
Задание 2:
1018 : 1012 + 1019∙(10110 – 1018) + 10116
Задание 3:
А = 100,3, В = 201,48.
Задание 4:
А = 46 (a: shortint)
а) на 4 бита влево,
б) на 5 бит вправо,
в) на 4 бита вправо.
Задание 5:
а) проверить, присутствует ли в данном байте целиком битовая последовательность «111111»,
б) заменить в данном байте отдельные биты так, чтобы данный байт удовлетворял битовой маске «??10??10».
Задание 6:
IP: 148.200.199.250,
маска подсети: 255.255.255.240.
Выполнение работы
Задание 1.
Для данной программы вычислить итоговый результат (в десятичной системе счисления) со всеми расчетами в двоичной системе счисления. Задание выполнить в двух вариантах, в зависимости от типа переменных:
Var a, b, rez : shortint; |
Var a, b, rez : byte; |
begin
a := 13;
a := not a and (a - $13);
b := $11;
rez := a - b;
writeln(rez);
end.
Вариант 1.
При типе данных shortint число должно входить в диапазон от -128 до 127 и занимать 1 байт памяти.
Рассмотрим часть кода нашей программы:
a := 13;
a := not a and (a - $13);
Оператор not делает из числа 13 число -14. Рассмотрим, как выполняется данное преобразование:
1310=11012
Дополним получившееся число до 8 бит:
000011012
Оператор not делает следующую операцию с числом:
not 000011012=111100102=-1410
Рассмотрим оставшийся код:
b := $11;
rez := a - b;
В этой части выполняется вычитание из десятичного числа -14 шестнадцатеричного числа 11.
Переведем оба числа в двоичную сс. В результате чего получим:
1116=0000100012
-1410=111100102
Выполним вычитание и переведем результат в десятичную систему счисления:
111100102-100012=111010012=-3110
Вариант 2.
При типе данных byte число может принимать значения в диапазоне от 0 до 255 и занимать 1 байт памяти.
Так же рассмотрим фрагмент нашего кода:
a := 13;
a := not a and (a - $13);
При выполнении данного фрагмента происходит преобразование десятичного числа 13 в число 242. Рассмотрим подробнее донный процесс.
Тип данных byte это тип без знака, а, следовательно, число не может принимать отрицательных значений в отличии от типа shortint. И поэтому после оператора not происходит не преобразование данного числа в отрицательное, а как бы его циклический перенос в начало диапазона значений, но так как число не может быть больше 255 то происходит вычитание из максимального значения (255) исходного числа (в нашем случае это 13), в результате чего мы получаем значение 242.
Переведем получившееся число в двоичную систему:
24210=111100102
Рассмотрим оставшийся код:
b := $11;
rez := a - b;
В этой части выполняется вычитание из десятичного числа 242 шестнадцатеричного числа 11.
Переведем оба числа в двоичную сс. В результате чего получим:
1116=0000100012
24210=111100102
Выполним вычитание и переведем результат в десятичную систему счисления:
111100102-100012=111010012=22510
Задание 2.
Вычислите значение указанного выражения. Вычисления и ответ представить в двоичной системе счисления.
1018 : 1012 + 1019∙(10110 – 1018) + 10116
Для выполнения данного задания переведем все числа в двоичную систему счисления:
1018 = 10000012
1012 = 1012
1019 = 10100102
10110 = 11001012
1018 = 10000012
10116 = 1000000012
Выполним все действия в нужной очередности.
11001012-10000012=1001002
10100102*1001002=1011100010002
10000012 / 1012=11012
11012+1011100010002=1011100101012
1011100101012+1000000012=1100100010012