c è una formula per fare l inverso di questa
if (lettura_sonda_2 < 0) lettura_sonda_2 = lettura_sonda_2 *(-1);
… if (lettura_sonda_2 >= 0) lettura_sonda_2 = lettura_sonda_2 xxxxx ;
c è una formula per fare l inverso di questa
if (lettura_sonda_2 < 0) lettura_sonda_2 = lettura_sonda_2 *(-1);
… if (lettura_sonda_2 >= 0) lettura_sonda_2 = lettura_sonda_2 xxxxx ;
La stessa, basta moltiplicare per -1.
Occhio però che in quel modo otterrai SEMPRE un valore negativo.
Alterna
1 * -1 = -1
-1 * -1 = 1
v *= -1;
Alterna
1 = -1
-1 = 1
v = -v;
Specifico per gcc (non so se va per avr)
mette -
int v = 10;
v |= 0x8000;
toglie -
int v = 10;
v &= ~0x8000;
inverte
int v = 10;
v ^= 0x8000;
abs(x) ti da il valore assoluto, cioè sempre e comunque positivo.
vbextreme:
Sempre
1 * -1 = -1
-1 * -1 = -1 <--------
Questa non mi è chiara …
Guglielmo
dov'è?
Anche il resto ho qualche dubbio che funzioni. Funziona solo con una rappresentazione in modulo e segno su 16 bit, ma non certo con quella in complemento a 2.
Quindi al massimo:
v = ~v + 1;
Ma credo che stiamo solo confondendo le idee al povero elrospo...
SukkoPera:
La stessa, basta moltiplicare per -1.Occhio però che in quel modo otterrai SEMPRE un valore negativo.
....quindi il moltiplicare per -1. cambia il segno :o da più a meno, e da meno a più ?
Erm sì, lo insegnano in 1a media, credo :). Puoi anche dividerer per -1, se preferisci :D.
SukkoPera:
Erm sì, lo insegnano in 1a media, credo :). Puoi anche dividerer per -1, se preferisci :D.
tanks, e pensare che 40 anni fa credevo che la matematica era il mio mestiere
elrospo:
tanks, e pensare che 40 anni fa credevo che la matematica era il mio mestiere
Ripeti dopo di me ...
più per più fa più
più per meno fa meno
meno per più fa meno
meno per meno fa più
Guglielmo
P.S.: Naturalmente si scherza eh ...
Su, capita! Ti do un karma di incoraggiamento :).
@sukkopera dovrebbe essere una feature di gcc, non so se però va su avr, appena posso compilo e vi faccio sapere