- Messaggi: 130
- Ringraziamenti ricevuti 11
Variabili unsigned
8 Anni 5 Mesi fa #1
da Claudio_F
Variabili unsigned è stato creato da Claudio_F
Cercando di usare il modulo A/D del PIC18F4550, mi sono trovato a sottrarre da un unsigned int inizializzato a 512 un insigned int che conteneva il valore di 1024. Dato che le variabili sono entrambe unsigned, mi sarei atteso come risultato 0, ma sul display usando la fumzione "LCD_write_integer()" mi sono trovato a leggere -512. E' normale, un difetto del compilatore o della libreria Display?
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Claudio_F
- Autore della discussione
- Premium Member
Riduci
Di più
8 Anni 5 Mesi fa - 8 Anni 5 Mesi fa #2
da firstcolle
Risposta da firstcolle al topic Variabili unsigned
il numero che vedi è dato da 2 fattori
1 il pic quando si trova a fare una sottrazione a-b con b>a arriva a 0 e poi continua a sottrarre partendo dal valore massimo della variabile unsigned int (65536). quindi hai
512 - 1024
512 - 512 = 0
rimangono altri 512 da sottrarre (1024-512 = 512)
la variabile si resetta al valore massimo quindi
65536 - 512 = 65024
tradotto in esadecimale = 0xFE00
2 la funzione write integer scrive su display un valore signed int quindi tratta il tuo dato come fosse signed e FE00 in signed int è -512.
ragionamento fatto al volo senza controllare libreria e valori.. ma sembra quadrare
1 il pic quando si trova a fare una sottrazione a-b con b>a arriva a 0 e poi continua a sottrarre partendo dal valore massimo della variabile unsigned int (65536). quindi hai
512 - 1024
512 - 512 = 0
rimangono altri 512 da sottrarre (1024-512 = 512)
la variabile si resetta al valore massimo quindi
65536 - 512 = 65024
tradotto in esadecimale = 0xFE00
2 la funzione write integer scrive su display un valore signed int quindi tratta il tuo dato come fosse signed e FE00 in signed int è -512.
ragionamento fatto al volo senza controllare libreria e valori.. ma sembra quadrare
Ultima Modifica 8 Anni 5 Mesi fa da firstcolle.
Si prega Accedi o Crea un account a partecipare alla conversazione.
- firstcolle
- Platinum Member
Riduci
Di più
- Messaggi: 362
- Ringraziamenti ricevuti 39
8 Anni 5 Mesi fa #3
da Claudio_F
Risposta da Claudio_F al topic Variabili unsigned
quindi tutto sommato in questo caso è meglio usare delle variabili (signed) int, così non ho sorprese.
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Claudio_F
- Autore della discussione
- Premium Member
Riduci
Di più
- Messaggi: 130
- Ringraziamenti ricevuti 11
Moderatori: Mauro Laurenti, Pinna, StefA, Matteo Garia
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.