convertire numero negativo in positivo

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 … :stuck_out_tongue_closed_eyes:

Guglielmo

dov'è? :grin:

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 :cry:

elrospo:
tanks, e pensare che 40 anni fa credevo che la matematica era il mio mestiere :cry:

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 :grin: :smiley: :grin:

P.S.: Naturalmente si scherza eh ... :wink:

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