Convesione binario decimale e viceversa

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

se vuoi scrivere in binario devi usare 0b ➜

  led = 0b110000001100000011000000;

altrimenti è un enorme valore decimale (12632256) che verrà utilizzato dal compilatore

... 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

è standard del C++14 ma dal momento che usiamo C++11 con Arduino hai ragione.

GCC lo consente.

1 Like

Ciao
Grazie
mi ero dimenticato quella sintassi, adesso funziona

verifico il programma principale

... io comunque parlavo di 'C', dove quella forma non è prevista. :wink:

Buono a sapersi che comunque l'hanno introdotta come standard nel C++ 14 :slight_smile:

Guglielmo

➜ è previsto per C23

1 Like

... vedremo quanti produttori aggiornerano i compilatori nei loro ambienti di sviluppo ... sono sempre piuttosto ... pigri e lenti :smiling_imp:

Guglielmo

si, è vero che sono lenti ma d'altra parte la maggior parte dei compilatori già supporta questa notazione...

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.