stefa24
November 9, 2022, 10:39am
1
Ciao
Per un progetto piu' ampio che coinvolge arduino un modulo BT e una app che sto realizzando, per il controllo del flusso di semi in una macchinna ho scritto questo
long led;
void setup()
{
Serial.begin(9600); //per debug
led = 110000001100000011000000;
Serial.println(led, BIN);
Serial.println(led, DEC);
Serial.println(1588107456, BIN);
Serial.println(12632256, BIN);
}
void loop()
{
}
ma non capisco il risultato della conversione, il num binario convertito manualmente dovrebbe essere
12632256
Qualcuno me lo spiega per piacere
Grazie
J-M-L
November 9, 2022, 10:47am
2
se vuoi scrivere in binario devi usare 0b ➜
led = 0b110000001100000011000000;
altrimenti è un enorme valore decimale (12632256) che verrà utilizzato dal compilatore
gpb01
November 9, 2022, 10:58am
3
... e non sempre è possibile dato che il 0bxxxx è un estensione rispetto allo standard del 'C' che NON lo prevede. Mi pare che gcc lo gestisca, ma altri compilatori potrebbero dare errore.
Guglielmo
J-M-L
November 9, 2022, 11:03am
4
è standard del C++14 ma dal momento che usiamo C++11 con Arduino hai ragione.
GCC lo consente.
1 Like
stefa24
November 9, 2022, 11:39am
5
Ciao
Grazie
mi ero dimenticato quella sintassi, adesso funziona
verifico il programma principale
gpb01
November 9, 2022, 12:05pm
6
... io comunque parlavo di 'C' , dove quella forma non è prevista.
Buono a sapersi che comunque l'hanno introdotta come standard nel C++ 14
Guglielmo
gpb01
November 9, 2022, 12:19pm
8
J-M-L:
➜ è previsto per C23
... vedremo quanti produttori aggiornerano i compilatori nei loro ambienti di sviluppo ... sono sempre piuttosto ... pigri e lenti
Guglielmo
J-M-L
November 9, 2022, 12:28pm
9
si, è vero che sono lenti ma d'altra parte la maggior parte dei compilatori già supporta questa notazione...
system
Closed
May 8, 2023, 12:29pm
10
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.