Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 19.12.2011, 02:28   #1 (permalink)
Танюшка 1991
Новичок
 
Регистрация: 19.12.2011
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Помогите решить

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

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

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

Индивидуальные задания:
(во всех заданиях рассматривается тип word)
1. Циклически сдвинуть двоичные разряды числа на одну позицию вправо
Танюшка 1991 вне форума   Ответить с цитированием

Старый 19.12.2011, 02:28
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Обсуждаемые топики могут вам помочь в решении вопроса

Помогите решить
Помогите решить
Помогите решить что полетело
Помогите решить проблему с XP
Помогите решить задачу

Старый 19.12.2011, 11:27   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Да, интересно. Что-то и не соображу, как с такими жесткими ограничениями вывернуться.
Цитата:
Сообщение от Танюшка 1991 Посмотреть сообщение
Задано целое число без знака (тип 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.
Но, боюсь, что это выйдет за пределы ограничений...
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 03:03.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.