• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о проекте, чтобы узнать больше. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Помогите решить

Танюшка 1991

Ученик
Регистрация
19 Дек 2011
Сообщения
2
Реакции
0
Баллы
0
Помогите решить

Лабораторная работа №2 (2 часа)
Побитовые операции

Замечание. При работе нельзя использовать массивы для хранения цифр двоичного представления чисел. Все действия необходимо выполнить, используя либо арифметические операции “+” или “-“ либо побитовые операции “shl”, “shr”, “and”, “or” или “xor” языка Pascal

Общие задания
Задано целое число без знака (тип word). Распечатайте содержимое битов заданного числа.

Индивидуальные задания:
(во всех заданиях рассматривается тип word)
1. Циклически сдвинуть двоичные разряды числа на одну позицию вправо
 
Да, интересно. Что-то и не соображу, как с такими жесткими ограничениями вывернуться.
Задано целое число без знака (тип word). Распечатайте содержимое битов заданного числа.
Это-то можно, только вот биты будут идти в обратном порядке, т.е. возрастание разрядов идет слева направо, а не справа налево, как обычно:
Код:
VAR
 x,y:Word;
BEGIN
 Write('x= ');
 Readln(x);
 Repeat
  y:=x Shr 1;
  y:=y Shl 1;
  Write(x-y);
  x:=x Shr 1;
 Until x=0;
 Readln;
END.
А вот как их в нормальном порядке выстроить... То есть можно, скажем, так:
Код:
VAR
 x,y:Word;
 t:Byte;
 z,m:LongInt;
BEGIN
 Write('x= ');
 Readln(x);
 m:=1;
 z:=0;
 Repeat
  y:=x Shr 1;
  y:=y Shl 1;
  t:=x-y;
  z:=z+t*m;
  x:=x Shr 1;
  m:=m*10;
 Until x=0;
 Writeln(z);
 Readln;
END.
Но, боюсь, что это выйдет за пределы ограничений...:tehnari_ru_325:
 
Назад
Сверху