Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
11 / 11 / 2
Регистрация: 17.02.2014
Сообщений: 947

Напишите функции для циклического сдвига слова влево и вправо

03.02.2016, 19:05. Показов 1704. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно использовать SHL и SHR для сдвига? Не очень понятно как определить в какой момент нужно прекращать сдвиги?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.02.2016, 19:05
Ответы с готовыми решениями:

Написать программу для циклического сдвига списка на n-1 элементов влево
Здравствуйте, помогите написать программу на Lisp Написать программу для циклического сдвига списка на n-1 элементов влево (очень нужно)

Определить функцию для циклического сдвига списка вправо на один элемент
Дан список. Определить функцию для циклического сдвига списка вправо на один элемент. Использовать только базис Лиспа. Самым простым...

Функция циклического сдвига побитово вправо
Форумчане, приветствую! Подскажите почему не работает сдвиг вправо? Программа компилируется, но сдвига не происходит. Сверился с...

2
 Аватар для APALoff
1648 / 1077 / 1081
Регистрация: 03.07.2013
Сообщений: 4,507
04.02.2016, 10:07
Цитата Сообщение от jestero Посмотреть сообщение
Не очень понятно как определить в какой момент нужно прекращать сдвиги?
Когда значение станет нулевым.
0
Модератор
10411 / 5698 / 3401
Регистрация: 17.08.2012
Сообщений: 17,352
05.02.2016, 21:27
Лучший ответ Сообщение было отмечено ZX Spectrum-128 как решение

Решение

Цитата Сообщение от APALoff Посмотреть сообщение
Когда значение станет нулевым
Неверно. Потому что
Напишите функции для циклического сдвига
Цитата Сообщение от jestero Посмотреть сообщение
Нужно использовать SHL и SHR для сдвига?
Можно, но не обязательно. Можно так, например:

Влево:
Pascal
1
2
3
4
5
6
7
8
function rol(n, w: word):word;
var i: word;
begin
  for i := 1 to n mod (sizeof(word) * 8) do
    w := w * 2 + w div (high(word) div 2 + 1);
    {w := w shl 1 + w div (high(word) shl 1 + 1);}
  rol := w
end;
Вправо:
Pascal
1
2
3
4
5
6
7
8
function ror(n, w: word):word;
var i: word;
begin
  for i := 1 to n mod (sizeof(word) * 8) do
    w := w div 2 + w mod 2 * (high(word) div 2 + 1);
    {w := w shr 1 + (w shr 1) * (high(word) shr 1 + 1);}
  ror := w
end;
Если доступен встроенный ассемблер (Не помню, так ли это в этом уродце ABC), то всё значительно проще, без циклов:

Влево:
Pascal
1
2
3
4
5
6
7
8
9
function rotl(n, w: word):word;
begin
  asm
    mov cl, n;
    mov ax, w
    rol ax, cl;
    mov rotl, ax;
  end
end;
Вправо:
Pascal
1
2
3
4
5
6
7
8
9
function rotr(n, w: word):word;
begin
  asm
    mov cl, n;
    mov ax, w
    ror ax, cl;
    mov rotr, ax;
  end
end;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.02.2016, 21:27
Помогаю со студенческими работами здесь

Получить результат циклического сдвига элементов списка на K позиций влево
Доброго времени суток. Не могли бы вы мне помочь решить несколько задач на прологе. Очень долго уже ломаю голову: Задачи на работу со...

Составить программу осуществления циклического сдвига влево на k позиций элементов вектора
Составить программу осуществления циклического сдвига влево на k позиций элементов вектора В = { bi }, i = 1/n. Добавлено через 3 часа...

Ввести число и вывести результат циклического сдвига его битов на 1 разряд влево
Проверьте пожалуйста, правильное ли решение. Ввести число и вывести результат циклического сдвига его битов на 1 разряд влево (все биты...

Вывести результат последовательного применения циклического сдвига вправо заданной последовательности k раз
Циклическим сдвигом вправо последовательности называется последовательность, получаемая из исходной перемещением последнего элемента в...

Разработать программу циклического перемещения символов строки на 1 позицию влево(вправо)
Разработать программу циклического перемещения символов строки на 1 позицию влево(вправо). P. S. Буду благодарен.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru