В
Все
Б
Биология
Б
Беларуская мова
У
Українська мова
А
Алгебра
Р
Русский язык
О
ОБЖ
И
История
Ф
Физика
Қ
Қазақ тiлi
О
Окружающий мир
Э
Экономика
Н
Немецкий язык
Х
Химия
П
Право
П
Психология
Д
Другие предметы
Л
Литература
Г
География
Ф
Французский язык
М
Математика
М
Музыка
А
Английский язык
М
МХК
У
Українська література
И
Информатика
О
Обществознание
Г
Геометрия
lyubimov2006
lyubimov2006
21.05.2022 19:51 •  Информатика

Запишите содержимое (в шестнадцатеричной системе) регистра DL, полученное в результате выполнения следующих операторов ассемблера:

MOV DL, 0F1h
MOV CL, 3
SHR DL, CL

Показать ответ
Ответ:
Jiter
Jiter
26.02.2022 10:24

7

Объяснение:

Заметим, что две операции типа 2 не меняют число: если было число x, то после первого вычитания получим 2 - x, после второго 2 - (2 - x) = x.

Значит, в самой короткой последовательности, которая получает 231 из числа 1, нет двух операций типа 2 подряд.

Рассмотрим самую короткую последовательность, получающую 231. Идем с конца:

231 делится на 3. Если бы последней операцией было вычитание, то на предыдущем шаге было бы -229, это число не делилось бы на 3, и получилось бы, что в последовательности два вычитания подряд, чего быть не должно. Значит, последняя операция - умножение, число на предыдущем шаге - 231 / 3 = 7777 не делится на 3, единственный вариант для предыдущего шага - получить из -75 путем вычитания-75 делится на 3, аналогично первому рассуждению это результат умножения числа -25 на 3-25 не делится на 3, оно получено из 27 путем вычитания27 делится на 3, аналогично, получено из 9 умножением9 делится на 3, аналогично, получено из 3 умножением3 могло получиться из 1 за один шаг умножением на 3.

Итак, всё происходило так:

(1) 1 * 3 = 3

(1) 3 * 3 = 9

(1) 9 * 3 = 27

(2) 2 - 27 = -25

(1) -25 * 3 = -75

(2) 2 - (-75) = 77

(1) 77 * 3 = 231

0,0(0 оценок)
Ответ:
kery99
kery99
25.07.2020 08:28

сообщение об ошибке (или 900)

Объяснение:

В программе есть несколько ошибок:

- в строчке c1 = 10 вместо = должно быть :=

- в строчке write(Apb(ci,c2)*Apb(c1,c2); вместо ci видимо должно быть c1; кроме того, не хватает одной закрывающей скобки.

Если все эти ошибки исправить, получится такая программа:

program Primer;

var  c1, c2: integer;

function Apb(a, b: integer): integer;

begin

 Apb := a + b;

end;

begin

 с1 := 10;

 с2 := 20;

 write(Apb(c1, c2) * Apb(c1, c2));

end.

Apb - просто функция, которая выдает сумму своих аргументов. Тогда

Apb(c1, c2) * Apb(c1, c2) = (с1 + с2) * (с1 + с2) = (10 + 20) * (10 + 20) = 900.

Это число и будет выведено на экран инструкцией write

0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота