Как получилось положительное число?

NikitaS
Offline
Зарегистрирован: 22.10.2016

Начинаю знакомиться с Ардуино. Раньше изучал основы языка С++. Загружая скетч из стандартных примеров из IDE Ардуино, и пытаясь понять логику кода, встретил совершенно непонятное превращение из отрицательного числа в положительное. Вот тот кусок:

  if (brightness <= 0 || brightness >= 255) {
    fadeAmount = -fadeAmount;
  }

Если переменная brightness достигает значения 255, то fadeAmount получает отрицательное значение. Это я понимаю. Но если brightess <= 0, то как fadeAmount получает положительное число? Сколько ни смотрю, если brightess <=0, то fadeAmount должен опять получить -5, в результате операции присвоения -5 = -5. А получается, в результате какого-то незнакомого мне, видимо, правила, +5. Кто-нибудь знает, в чем тут хитрость?

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

Вы имеете в виду то, что 

 fadeAmount = -fadeAmount;

сделают из -5 опять -5?

Если так, то у вас проблемы с математикой уровня 6 класса и вы не знаете, что такое противоположное число.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016
// та ладно 
fadeAmount  = -fadeAmount;
// радуйся что не так
fadeAmount = ! fadeAmount;
// или так
fadeAmount = ~ fadeAmount;
// а этот код
if (brightness <= 0 || brightness >= 255) {
  fadeAmount = -fadeAmount;
}
// можно записать так
if (brightness <= 0)   fadeAmount = -fadeAmount;
if (brightness>= 255)   fadeAmount = -fadeAmount;
}

 

NikitaS
Offline
Зарегистрирован: 22.10.2016

Yarik.Yar пишет:

Вы имеете в виду то, что 

 fadeAmount = -fadeAmount;

сделают из -5 опять -5?

Тут я имел в виду операцию присвоения fadeAmount, где уже содержится -5, отрицательного числа из того же самого fadeAmount, содержащего -5. Я в курсе, что в результате чисто математической операции -5 -5 получится 0. Так вот, непонятно, откуда берется положительное число 5 в переменной fadeAmount!

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016
fadeAmount = 5;
или так
fadeAmount = -(-5);
это одно и тоже

 

xDriver
xDriver аватар
Онлайн
Зарегистрирован: 14.08.2015

qwone пишет:

fadeAmount = 5;
или так
fadeAmount = -(-5);
это одно и тоже

Зачем вы так, он с ума сейчас сойдет :)

 

NikitaS пишет:

"в результате операции присвоения -5 = -5. А получается, в результате какого-то незнакомого мне, видимо, правила, +5. "

Судя вот поэтому, он не понимает вообще что такое присвоение 

 

NikitaS
Offline
Зарегистрирован: 22.10.2016

Получается, выражение х = -х означает "присвоить х противоположное число", а не "присвоить х х, но с минусом"?

Joiner
Offline
Зарегистрирован: 04.09.2014

Да там просто пока значение от 0 до 255 фейдамаунт равный 5 прибавляется, а когда значение стало 255 или 260, т.е >= 255, то фейдамаунт начинает вычитаться, и когда зачение становится 0, то фейдамаунт начинает  опять плюсоваться. И так бесконечно.

NikitaS
Offline
Зарегистрирован: 22.10.2016

qwone пишет:

fadeAmount = 5;
или так
fadeAmount = -(-5);
это одно и тоже

//скобок там, в примере, нет, получается, вот так:
fadeAmount = - - 5;
// то же что и:
fadeAmount = 5;

 

negavoid
Offline
Зарегистрирован: 09.07.2016

NikitaS, скобки вместо вас в это выражение "подставил" компилятор

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

NikitaS пишет:

...Я в курсе, что в результате чисто математической операции -5 -5 получится 0...

-5-5 будет -10, сударь...

xDriver
xDriver аватар
Онлайн
Зарегистрирован: 14.08.2015
Joiner
Offline
Зарегистрирован: 04.09.2014

Там написано 

if (brightness == 0 || brightness == 255) {

    fadeAmount = -fadeAmount ;
т.е. если до достижения условия было 
    brightness = brightness + (+5);
то при достижении условия будет
    brightness = brightness + (-5);
По моему все нормально, и все работает как положено
NikitaS
Offline
Зарегистрирован: 22.10.2016

Joiner пишет:

Да там просто пока значение от 0 до 255 фейдамаунт равный 5 прибавляется, а когда значение стало 255 или 260, т.е >= 255, то фейдамаунт начинает вычитаться, и когда зачение становится 0, то фейдамаунт начинает  опять плюсоваться. И так бесконечно.

Это я понимаю. И понимаю даже, что значит ||. Единственное, что непонятно, это как получается, когда fadeAmount равно нулю, получается положительное число 5, когда в fadeAmount пытаются присвоить отрицательное число. Но благодаря форумчанам, начинает проясняться, что в Ардуино есть доселе мне неизвестная операция (хотя я изучал основы С++), х = -х, означающая "присвоить x противоположное значение". Я эту операцию читал как "присвоить х значение х, но только с минусом". Оказывается, не все то золото, что блестит. То есть иногда суть может отличаться от зримого.

Joiner
Offline
Зарегистрирован: 04.09.2014

NikitaS пишет:

Joiner пишет:

Да там просто пока значение от 0 до 255 фейдамаунт равный 5 прибавляется, а когда значение стало 255 или 260, т.е >= 255, то фейдамаунт начинает вычитаться, и когда зачение становится 0, то фейдамаунт начинает  опять плюсоваться. И так бесконечно.

Это я понимаю. И понимаю даже, что значит ||. Единственное, что непонятно, это как получается, когда fadeAmount равно нулю, получается положительное число 5, когда в fadeAmount пытаются присвоить отрицательное число. Но благодаря форумчанам, начинает проясняться, что в Ардуино есть доселе мне неизвестная операция (хотя я изучал основы С++), х = -х, означающая "присвоить x противоположное значение". Я эту операцию читал как "присвоить х значение х, но только с минусом". Оказывается, не все то золото, что блестит. То есть иногда суть может отличаться от зримого.

А если Х уже с минусом? Разве -(-Х) не будет равно +Х? Вы открываете какую-то новую америку...

А фейдамаунт в данном примере ни когда не будет равным нулю. Он будет или 5 или -5.

А нулю иногда будет равна брайшест, т.е. от 0 до 255 и от 255 до 0 с шагом 5, туда и обратно.

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

NikitaS, решите уравнение:

-x = -5

Чему равен Х?

 

NikitaS
Offline
Зарегистрирован: 22.10.2016

Это, я так понимаю, математическое уравнение, а не присвоение на языке программирования? В этом случае х равен -5.

xDriver
xDriver аватар
Онлайн
Зарегистрирован: 14.08.2015

Я в шоке, сколько вам лет ?

А если вот так

 -(x) = -5

 

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

Рискну предположить, что до средней школы вы не дошли, NikitaS?

Почему-то я в 10 классе догвадываюсь, что x будет равен 5...(деление обеих частей уравнения на одинаковое число, не содержащее неизвестное и не равное нулю)

 

NikitaS
Offline
Зарегистрирован: 22.10.2016

Yarik.Yar пишет:

Рискну предположить, что до средней школы вы не дошли, NikitaS?

Почему-то я в 10 классе догвадываюсь, что x будет равен 5...(деление обеих частей уравнение на одинаковое число, не содержащее неизвестное и не равное нулю)

Мне тоже кажется, что не дошел я до средней школы )). Вот вы в скобках написали: не содержащее неизвестное... Тем временем уравнение, предложенное вами, как раз содержит х, то есть неизвестное. Может, у вас какая-то ошибка имеется, в таком случае? Я никоим образом не подвергаю ваши знания сомнению, просто стало интересно.

NikitaS
Offline
Зарегистрирован: 22.10.2016

xDriver пишет:

Я в шоке, сколько вам лет ?

А если вот так

 -(x) = -5

Мои лета - это уже оффтопик ). А ваше уравнение я решил бы так: -(х)5.

xDriver
xDriver аватар
Онлайн
Зарегистрирован: 14.08.2015

Пиз..ц !!! (ну просто нет слов)

Решение уравнения это нахождение неизвестного(ых), в нашем случае x.

Что за бред вы написали ?

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

Так. Выдыхаааем. Углубимся в математику.

Цитата:

Тем временем уравнение, предложенное вами, как раз содержит х, то есть неизвестное.

Уравнения не могут не содержать неизвестных, на то они и уравнения...высказывание насчёт не содержащего неизвестное - сюда:

Цитата:

...деление обеих частей уравнения на одинаковое число, не содержащее неизвестное и не равное нулю...

А вот это я не понял:

Цитата:

А ваше уравнение я решил бы так: -(х)5.

Объясните? Интересно самому...

 

xDriver
xDriver аватар
Онлайн
Зарегистрирован: 14.08.2015

NikitaS пишет:

Мои лета - это уже оффтопик ). 

Я просто пытаюсь понять, ваша тупость это возрастное или элементарная необразованность.

NikitaS
Offline
Зарегистрирован: 22.10.2016

Yarik.Yar]</p> <p>Уравнения не могут не содержать неизвестных, на то они и уравнения...высказывание насчёт не содержащего неизвестное - сюда:</p> <p>[quote пишет:

...деление обеих частей уравнения на одинаковое число, не содержащее неизвестное и не равное нулю...

Теперь понятно, был невнимателен при чтении.

Цитата:

А вот это я не понял:

Объясните? Интересно самому...

Тут тоже упустил из виду значение слова "уравнение". В свете обновленных знаний в математике, сейчас бы решил уравнение так: так как неизвестно, что скрывается под х, то  -(-х) равно -(-5). В математике же знак = не означает присвоения, так? А означает равно, вот и выходит, что -(-х) равно -(-5).

xDriver
xDriver аватар
Онлайн
Зарегистрирован: 14.08.2015

Ну давай родной, давай....

Чему равен x ?

NikitaS
Offline
Зарегистрирован: 22.10.2016

х равен -(-5). Пишу на случай, если вы не увидели предыдущего моего сообщения.

xDriver
xDriver аватар
Онлайн
Зарегистрирован: 14.08.2015

Ура !!!

Сынок, напряги еще раз извилину, -(-5) это не число , а выражение, как теперь раскрыть (убрать) скобки ?

Я верю в тебя, не подведи !!!

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Блин . Здесь форум программирования, а не математиков. Да еще ардуинщиков. И для ардуинщиков это выражение (2>1) даст 1 , а не то что там кто-то придумает а вот (2<1) будет 0.  И если компилятор пропустит дествие  -Х=-(-5)  даст что в Х будет находится 5: а вот --Х или х--  инкрементирует х на 1. Синтаксис языка Си господствует здесь, а не правила математики.

NikitaS
Offline
Зарегистрирован: 22.10.2016

Напрягши извилину до предела, добыл инфу, что минус на минус дает плюс, в нашем случае +5. Теперь понял, почему присвоение -5 переменной fadeAmount, содержащей -5, дает 5. Всем спасибо за помощь в устранении пробела в образовании!

xDriver
xDriver аватар
Онлайн
Зарегистрирован: 14.08.2015

qwone пишет:

 И если компилятор пропустит дествие  -Х=-(-5)  даст что в Х будет находится 5:

не пропустит.

NikitaS удачи.

 

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

NikitaS пишет:

И понимаю даже, что значит ||.

Этого Вы не понимаете. Отсюда и возник весь сырбор. Если бы Вы это понимали, у Вас бы не возник этот вопрос.

dgeka
Offline
Зарегистрирован: 05.07.2016

при выводе температуры на "Большие светодиодные часы на arduino" можно тоже так с отрицательными температурами играться ? 

b707
Offline
Зарегистрирован: 26.05.2017

dgeka пишет:

при выводе температуры на "Большие светодиодные часы на arduino" можно тоже так с отрицательными температурами играться ? 

Жека, в этой старой теме никто не игрался, она на самом деле очень печальная... взрослому человеку на протяжении 30 сообщений втолковывали правило арифметики  "минус на минус дает плюс". Это или маразм или тупость... в любом случае веселого мало.

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Да уж, это со школы забыть или не знать: -x = (-1)x, следовательно (-1)(-1)x = (1)x.

Пичалька....

SLKH
Offline
Зарегистрирован: 17.08.2015

b707 пишет:

dgeka пишет:

при выводе температуры на "Большие светодиодные часы на arduino" можно тоже так с отрицательными температурами играться ? 

Жека, в этой старой теме никто не игрался, она на самом деле очень печальная... взрослому человеку на протяжении 30 сообщений втолковывали правило арифметики  "минус на минус дает плюс". Это или маразм или тупость... в любом случае веселого мало.

Веселое - это прикол авторов синтаксиса, выбравших оператор присваивания, который для нормальных людей воспринимается как знак равенства.