Ранг: Участник
Группы: Зарегистрированные пользователи
Зарегистрирован: 17.09.2008(UTC) Сообщений: 18 Баллов: 54 Откуда: Petersburg
|
Пусть A и B – два 8-разрядных регистра в обыкновенном 16-разрядном процессоре. Следующая процедура выполняет сдвиг регистра A на число разрядов, заданное в регистре B.
Loop: SHR A ; shift right A DEC B ; decrement B JNZ Loop ; loop again Напишите программу, которая выполняет сдвиг быстрее. Пользоваться многократным сдвигом запрещено.
На мой взгляд любой сдвиг вправо - это деление исходного числа на 2^n, где n количество разрядов, на которые мы хотим сдвинуть. Но вот вопрос - быстрее ли. Буду рад выслушать любое мнение по этой задачке. Спасибо!
|
|
|
|
|
|
|
|
|
|
Ранг: Новичок
Группы: Зарегистрированные пользователи
Зарегистрирован: 10.08.2011(UTC) Сообщений: 1 Баллов: 3 Откуда: Moscow
|
Недавно столкнулся с такой же задачей, задали на собеседовании, но я не смог ответить (думал дофига  ). Потом уже дома в интернете наткнулся на интересный ответ цикл на ассемблере: hashcode.ru/questions/1683 на hashcode.ru. Вот так всё просто оказалось 
|
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.