Написать программу на паскале
Задано целое число N. В ячейку памяти вычислительной машины записывается его двоичное представление (размер ячейки – 1 байт). Над содержимым ячейки выполняется преобразование: циклический сдвиг влево на одну позицию. Все цифры двоичного числа сдвигаются влево на одну позицию, при этом старший бит переходит в младший. Преобразование повторяется восемь раз (после последнего преобразования число становится исходным).
Напишите программу, которая по введенному натуральному десятичному числу N, вычисляет наибольшее из десятичных чисел, полученных в процессе преобразования.
Например: 201 представлено в ячейке памяти как 11001001. После первого сдвига влево получаем число 10010011, это соответствует десятичному числу 147.
Формат входных данных
Первая строка ввода содержит неотрицательное целое число N.
Формат выходных данных
Выведите единственное целое число R — наибольшее число, полученное в процессе преобразований.
Ограничения
0 ≤ N ≤ 255
Пример входных и выходных данных
Входные данные
Выходные данные
1
128
143
248

14 Сен 2019 в 08:43
273 +1
1
Ответы
1
program BinaryShift;
var
N, i, maxNum: integer;
binNum: array[0..7] of integer;
begin
readln(N);
for i := 0 to 7 do
begin
binNum[i] := N mod 2;
N := N div 2;
end;
maxNum := 0;
for i := 0 to 7 do
begin
N := binNum[0];
for j := 0 to 6 do
begin
binNum[j] := binNum[j+1];
N := N * 2 + binNum[j];
end;
binNum[7] := binNum[0];
N := N * 2 + binNum[7];
if N > maxNum then
maxNum := N;
end;
writeln(maxNum);
end.
20 Апр 2024 в 01:10
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир