Кто может толково и кратко объяснить суть SHL в данной программе , почему именно 2 возводится в i-1 степень (про степень понимаю , на форуме находил уже похожую тему ... но четкого там все таки не было ответа)
Кто может толково и кратко объяснить суть SHL в данной программе , почему именно 2 возводится в i-1 степень (про степень понимаю , на форуме находил уже похожую тему ... но четкого там все таки не было ответа)
В примере заполняется массив (типа 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 результат - сумма всех этих значений.
----
Если еще короче, то элемент массива заносится в соответствующий бит переменной. Только в данном примере почему-то не с нулевого, а с первого. Ну может так и задуманно было.