Задание В13

Материал из Saratov FIO Wiki
Перейти к: навигация, поиск

Значение переменной D, вычисленное в программе, написанной на языке BASIC,

D=0

M=1

FOR A=-1 TO 0

FOR B=-1 TO 0

FOR C=-1 TO 0

D=D-((A OR B) EQV NOT (C IMP (A AND B)))*M

M=m*2

NEXT C

NEXT B

NEXT A

PRINT “D=”; D

Решение.

Программа представляет собой три вложенных друг в друга цикла. Параметры циклов A, B, C изменяются от -1 до 0 с шагом 1. Так как при каждом повторении значение переменной M удваивается, то в M вычисляются степени двойки, начиная с нулевой степени (M=1). При вычислении значения переменной D необходимо вычислить коэффициент при M. Напомним, что логические операции над числовыми операндами производятся побитно. При этом результат интерпретируется как число со знаком. Значения переменных A, B и C это -1 или 0. В памяти -1 будет представлена в дополнительном коде следующим образом: 111111112. Число 0 в памяти будет представлено как 000000002. Таким образом, у каждой из переменных A, B и C все разряды либо содержат 0 либо 1. Найдем значение логического выражения

F=((A OR B) EQV NOT (C IMP (A AND B))).

ABCF1: A OR BF2: A AND BF3: C IMP (A AND B)F4: NOT F4F: F1 EQV F4
11111100
11011100
10110011
10010100
01110011
01010100
00100010
00000101

Значение переменной D является результатом перевода двоичного числа 10010100 в десятичную систему.

Этот перевод можно выполнить, используя шестнадцатеричное представление двоичного числа: 100101002=9416=14810.

Ответ: D=148.