Помогите понять кусок кода

i_demidov
Offline
Зарегистрирован: 22.08.2016

Добрый день! В си я новичок. Объясните пожалуйста что значит данный кусок кода.

DisplaysTotal=DisplaysWide*DisplaysHigh;
row1 = DisplaysTotal<<4;
row2 = DisplaysTotal<<5;
row3 = ((DisplaysTotal<<2)*3)<<2;

Чему равны row1, row2, и row3 если DisplayыTotal=18 и если DisplayыTotal=24?

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

row1 = DisplaysTotal<<4;   ->>>   DisplaysTotal * 16

row2 = DisplaysTotal<<5;  ->>>   DisplaysTotal * 32

row3 = ((DisplaysTotal<<2)*3)<<2;  ->>>   DisplaysTotal * 4 * 3 * 4



 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

i_demidov пишет:

Чему равны row1, row2, и row3 если DisplayыTotal=18 и если DisplayыTotal=24?

1) возьмите ардуину
2) вставьте эти Ваши строки в setup с соответсвующими описаниями
3) добавьте нужное количество Serial.println
4) посмотрите сами чему равны эти грёбанные выражения!
5) прекратите прекратите выставлять себя идиотом

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

xDriver,

зря Вы так. Сейчас он опишет их как какие-нибудь байты, напечатает и начнёт Вам мозг выносить типа "а чё они не этому равны?". Пусть сам хоть чуток поработает. Скоро уж 2х2 будут спрашивать (этот. кстати, уже совсем недалеко).

i_demidov
Offline
Зарегистрирован: 22.08.2016

Вопрос был о синтаксисе си. Хорош уже выпендриватся.

i_demidov
Offline
Зарегистрирован: 22.08.2016

xDriver пишет:


row1 = DisplaysTotal<<4;   ->>>   DisplaysTotal * 16

row2 = DisplaysTotal<<5;  ->>>   DisplaysTotal * 32

row3 = ((DisplaysTotal<<2)*3)<<2;  ->>>   DisplaysTotal * 4 * 3 * 4



 


Спасибо. << значит умножить на 2 в степени того числа на которое происходит сдвиг? А >> Будет значить деление?

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Вот зря Вы так!

Переносить "взрослые" понятия языка СИ в устройства для начинающих не совсем верно, мне так кажется.
Видел я программы на СИ где вся программа записана одной строкой (те кто не умеет сикать будут паскалить. )))

У меня очень простой тест на профпригодность выпускников "прикладная математика", прошу при мне написать алгоритм измерения  объема жидкости в бочке лежащей на боку в зависимости от степени наполненности, если мы знаем её диаметр, высоту и степень этой наполненности (надо же как-то считать остатки солярки) ...

Современные "прикладники" не справляются с простейшей задачей )))

Писать программы для попила баблосов и для решения реальных народно хозяйственных задач совсем иное...

PS в разделе ПРОГРАММИРОВАНИЕ этого оператора кстати нет, как и вычисление корня
 

i_demidov
Offline
Зарегистрирован: 22.08.2016

И еще вопрос. Это кусок из библиотеки DMD. Зачем сделали там побитовый сдвиг вместо умножения? Считается что сдвиг быстрее? Вроде же как если умножение происходит на число кратное двум, то равны, не?

i_demidov
Offline
Зарегистрирован: 22.08.2016

ЕвгенийП пишет:

xDriver,

зря Вы так. Сейчас он опишет их как какие-нибудь байты, напечатает и начнёт Вам мозг выносить типа "а чё они не этому равны?". Пусть сам хоть чуток поработает. Скоро уж 2х2 будут спрашивать (этот. кстати, уже совсем недалеко).

О кстати нашел тут... про вас написано))))

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

ua6em пишет:

Вот зря Вы так!

Переносить "взрослые" понятия языка СИ в устройства для начинающих не совсем верно, мне так кажется.
Видел я программы на СИ где вся программа записана одной строкой (те кто не умеет сикать будут паскалить. )))

У меня очень простой тест на профпригодность выпускников "прикладная математика", прошу при мне написать алгоритм измерения  объема жидкости в бочке лежащей на боку в зависимости от степени наполненности, если мы знаем её диаметр, высоту и степень этой наполненности (надо же как-то считать остатки солярки) ...

Современные "прикладники" не справляются с простейшей задачей )))

Писать программы для попила баблосов и для решения реальных народно хозяйственных задач совсем иное...

PS в разделе ПРОГРАММИРОВАНИЕ этого оператора кстати нет, как и вычисление корня
 

Что Вы бредите?

Сдвиг это не "взрослое понятие", а, млин, простейшая битовая операция.

На русско-говорящем сайте нет, но на оригинальном вот.

Без знания английского в программировании и электронике можно только полы мыть.

 

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

i_demidov пишет:

И еще вопрос. Это кусок из библиотеки DMD. Зачем сделали там побитовый сдвиг вместо умножения? Считается что сдвиг быстрее? Вроде же как если умножение происходит на число кратное двум, то равны, не?

"Не". Не равны.

Прочитайте Евгения, тут, в "прикрепленных темах". Назывется "Мрамор и штукатурка эффективности".

Нужно сперва читать, а ПОСЛЕ задавать вопросы.

Вас ругают исключительно за то, что нарушен разумный порядок.

Неуважительно - задавать очевидные вопросы, если Вы не 5-ти летний ребенок. Это показывает то, что Вам не нужен ответ, Вы ведь не стали даже Гугль ради ответа открывать.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

и все-таки поясню.

При отключенной оптимизации разница огромна. Другое дело то, что в среде Ардуино оптимизация всегда включена и умножение на степень двойки компилятор сам переделает в сдвиг.

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

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

wdrakula пишет:

ua6em пишет:

Вот зря Вы так!

Переносить "взрослые" понятия языка СИ в устройства для начинающих не совсем верно, мне так кажется.
Видел я программы на СИ где вся программа записана одной строкой (те кто не умеет сикать будут паскалить. )))

У меня очень простой тест на профпригодность выпускников "прикладная математика", прошу при мне написать алгоритм измерения  объема жидкости в бочке лежащей на боку в зависимости от степени наполненности, если мы знаем её диаметр, высоту и степень этой наполненности (надо же как-то считать остатки солярки) ...

Современные "прикладники" не справляются с простейшей задачей )))

Писать программы для попила баблосов и для решения реальных народно хозяйственных задач совсем иное...

PS в разделе ПРОГРАММИРОВАНИЕ этого оператора кстати нет, как и вычисление корня
 

Что Вы бредите?

Сдвиг это не "взрослое понятие", а, млин, простейшая битовая операция.

На русско-говорящем сайте нет, но на оригинальном вот.

Без знания английского в программировании и электронике можно только полы мыть.

 

Клапауций запретил применять сдвиг, а он тут главный!

PS и даже мой любимый XOR

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

RE Без знания английского в программировании и электронике можно только полы мыть.

есть масса прекрасных книг по электронике на русском, для современной электроники, таки да, даташиты придётся читать

А В.Высоцкий уже по этому поводу высказался - "в общественном Парижском туалете есть надписи на русском языке"

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

ua6em пишет:

"в общественном Парижском туалете есть надписи на русском языке"

This is the only way russian language fits exactly.

Sorry.

i_demidov
Offline
Зарегистрирован: 22.08.2016

wdrakula пишет:

i_demidov пишет:

И еще вопрос. Это кусок из библиотеки DMD. Зачем сделали там побитовый сдвиг вместо умножения? Считается что сдвиг быстрее? Вроде же как если умножение происходит на число кратное двум, то равны, не?

"Не". Не равны.

Прочитайте Евгения, тут, в "прикрепленных темах". Назывется "Мрамор и штукатурка эффективности".

Нужно сперва читать, а ПОСЛЕ задавать вопросы.

Вас ругают исключительно за то, что нарушен разумный порядок.

Неуважительно - задавать очевидные вопросы, если Вы не 5-ти летний ребенок. Это показывает то, что Вам не нужен ответ, Вы ведь не стали даже Гугль ради ответа открывать.

Чувство собсвенной значимости в дверной проем входить не мешает? Ну не нравится что-то, ну проходи мимо. Нет, надо обязательно остановится, потявкать, самоутвердиться. Английский стоит выучить только ради того чтобы не лицизреть местное высокомерие))) Самоутвердился? Причем исключительно в своем воображении)))) За объяснения спасибо.

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

i_demidov, как бы вас не расcпирало, но если хотите заниматься электронникой, вам придеться выучить английский :)

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

Valera19701 пишет:

i_demidov, как бы вас не раcСпирало, но если хотите заниматься электронНикой, вам придетЬся выучить английский :)

Прежде чем такие заявления делать, хорошо бы родной выучить.

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

да пох

Клапауций 234
Offline
Зарегистрирован: 24.10.2016

Valera19701 пишет:

да пох

верно, бурят! пох на руский языка!

arduino328
Offline
Зарегистрирован: 01.09.2016

wdrakula пишет:

Без знания английского в программировании и электронике можно только полы мыть.

Почему же так безапелляционно?
Меня в прошлом веке учили программировать и читать электронные схемы по учебникам на русском языке.
Для получения информации английский язык полезен, но для процесса программирования и ремонта электроники в нём нет необходимости.

arduino328
Offline
Зарегистрирован: 01.09.2016

xDriver пишет:

Valera19701 пишет:

i_demidov, как бы вас не раcСпирало, но если хотите заниматься электронНикой, вам придетЬся выучить английский :)

Прежде чем такие заявления делать, хорошо бы родной выучить.

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