Показано с 1 по 2 из 2

Тема: Поразрядовый сдвиг влево

  1. #1

    Red face Поразрядовый сдвиг влево

    Кто может толково и кратко объяснить суть SHL в данной программе , почему именно 2 возводится в i-1 степень (про степень понимаю , на форуме находил уже похожую тему ... но четкого там все таки не было ответа)
    Вложения Вложения
    • Тип файла: pro pack.pro (20.8 Кб, Просмотров: 30)

  2. #2
    Пользователь
    Регистрация
    19.11.2011
    Адрес
    г. Белгород
    Сообщений
    357

    По умолчанию

    В примере заполняется массив (типа INT) единицами с 1-го по 13-й элемент. 0-й и 14 элементы остаются равны нулю.

    Далее коротко суть SHL.
    Смотрим, что у нас в функции kvad происходит в цикле FOR по итерациям:
    i=1, p^[1]=1
    SHL(p^[1], 0) = 1 (*здесь сдвиг равен 0, поэтому результат 1, в бинарном виде 1*)

    i=2, p^[2]=1
    SHL(p^[2], 1) = 1 (*здесь сдвиг на 1, результат 2, в бинарном виде 10*)

    i=3, p^[3]=1
    SHL(p^[3], 2) = 4 (*здесь сдвиг на 2, результат 4, в бинарном виде 100*)

    i=4, p^[4]=1
    SHL(p^[4], 3) = 8 (*здесь сдвиг на 3, результат 8, в бинарном виде 1000*)
    ...
    i=14, p^[14]=0
    SHL(p^[14], 13) = 0 (*здесь сдвигаем 0 на 13, результат 0, в бинарном виде 0*)

    результат - сумма всех этих значений.

    i=1 00 0000 0000 0001
    i=2 00 0000 0000 0010
    i=3 00 0000 0000 0100
    i=4 00 0000 0000 1000
    i=5 00 0000 0001 0000
    i=6 00 0000 0010 0000
    i=7 00 0000 0100 0000
    i=8 00 0000 1000 0000
    i=9 00 0001 0000 0000
    i=0 00 0010 0000 0000
    i=10 00 0100 0000 0000
    i=11 00 1000 0000 0000
    i=12 01 0000 0000 0000
    i=13 00 0000 0000 0000
    kvad 01 1111 1111 1111 результат - сумма всех этих значений.

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

Похожие темы

  1. Сдвиг вправо в ПР (SHR)
    от serg_g в разделе Программируемые реле
    Ответов: 6
    Последнее сообщение: 07.02.2011, 16:22

Ваши права

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