Помогите с Электроникой

Выполнить операцию деления на 8 числа, находящегося в регистре сдвига. Результат представить в десятичном коде. Нарисуйте схему сдвигового регистра.
3 года назад от Игорь крутой

1 ответ

0 голосов
Задание выполняется в два действия.

Во-первых, деление на четные величины это просто сдвигание имеющегося в регистре значения вправо с заполнением освобождающихся слева бит нулями и потерей самых правых бит.

Пример. Допустим, у нас в регистре хранилось двоичное число

10101010
76543210 (в этой строке указаны номера его бит)

Сдвигаем его побитно вправо, после каждого сдвига на один бит слева записываем нуль, самый правый бит при этом теряется (выходит из регистра) .

После однократного сдвига вправо получим

01010101
76543210

Каждый сдвиг на один бит это деление числа на два. Таким образом, для деления числа на восемь необходимо выполнить сдвиг всех его бит вправо три раза (сдвиг на один бит мы уже выполнили) . После еще двух сдвигов вправо получится двоичное число

00010101
76543210 (напоминаю, это номера всех его бит)

Теперь о том, как преобразовать его к десятичному виду. Это тоже очень просто.

Каждому биту, начиная с самого правого, сответствует степень числа два, начиная с нулевой.

Иными словами, если в каком-то разряде стоит единица, то к десятичному результату надо прибавить два в степени, сответствующей номеру разряда, считая их от нуля справа налево.

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

Если в каком-то разряде ноль (например, в первом, третьем и др. для нашего случая) , ничего делать не нужно.

Движемся дальше справа налево, следующая единица стоит во второй позиции (напомню, номера бит начинаются с нуля и считаются справа налево) . Это значит, что в нашем числе также есть два во второй степени, т. е. четверка.

Следующая единица попадается в четвертой позиции, значит, к результату надо также добавить двойку в степени четыре, т. е. 16. Все, больше единиц нет, можно суммировать то, что получилось.

16 + 4 + 1 = 21 (это привычное нам десятичное число "двадцать один")

Сдвиговый регистр это просто восемь (или больше) смежных ячек, каждую из которых может занимать ноль или единица. Его можно нарисовать, например, вот так:
_
1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 |
-

При делении хранящегося в регистре числа на два все его биты сдвигаются вправо, при умножении на два - влево. Это можно показать стрелками с сответствующими подписями, например

 - Умножение / Деление -
3 года назад от CliftonDudge

Связанные вопросы

2 ответов
2 года назад от сергей дубинин
1 ответ
12 года назад от Анастасия Лавриченко
7 ответов
4 года назад от Nastya