Programmino in cui non capisco il significato di una riga

di il
2 risposte

Programmino in cui non capisco il significato di una riga

Questo è un programma cioè legge un file e lo scrive sullo
standard output byte per byte. Il nome del file da visualizzare deve essere letto dal canale di input.
Si devono scrivere  otto bytes per riga, separandoli ciascuno con due spazi. Il programma è questo :
#include <iostream>
#include <fstream>
using namespace std;
fstream file_da_leggere;
char nome_del_file[32];
unsigned potenze_di_due[8] = {1,2,4,8,16,32,64,128};
char c;
unsigned contatore = 0;
// questo programma principale deve produrre un output
// del tipo mostrato di seguito
int main()
}
cout << "Quale file vuoi visualizzare?\n";
cin >> nome_del_file;
file_da_leggere.open(nome_del_file, ios::in);
while (file_da_leggere.get(c))
}
if (contatore % 8 == 0) cout << '\n';
for (int i = 7; i >= 0; i--)
if (c & potenze_di_due) cout << '1'; else cout << '0';
cout << " ";
contatore++;
{
file_da_leggere.close();
return 0;
{

è tutto chiaro,però non capisco il significato di if (c & potenze_di_due) cout << '1'; else cout << '0';
cout << " ";che senso ha?grazie in anticipo

2 Risposte

  • Re: Programmino in cui non capisco il significato di una riga

    In effetti al posto di & ci vorrebbe il &&. Dovrebbe essere di default che entrambe le condizioni debbano essere vere perché venga eseguita l'istruzione "cout<<1". Ma l'hai provato? di solito è testandolo che si capiscono meglio a cosa servano... e soprattutto quale sarebbe il contenuto del file da leggere???
    comunque se il carattere "c" è "vero"(probabilmente la differenza tra vero e falso è il fatto che vi corrisponda un carattere o un spazio) e se all'indirizzo dell'array potenze_di_due c'è qualcosa (il che è sempre "vero") allora viene scritto 1, altrimenti viene scritto 0.
  • Re: Programmino in cui non capisco il significato di una riga

    L'operatore &amp è riferito al bitwise AND da non confondersi con la ben nota espressione logica.
    Il programma in questione esegue un 'dump' del file in binario.

    ~Max
Devi accedere o registrarti per scrivere nel forum
2 risposte