Oppure

Loading
13/01/11 21:13
ciao888
questo è un programma che 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 l' output

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[i]) 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[i]) cout << '1'; else cout << '0';
cout << " ";

che senso ha?grazie in anticipo
Ultima modifica effettuata da ciao888 13/01/11 21:14
aaa
13/01/11 22:10
Xaratroom
Il file viene stampato in "binario" ossia ogni carattere viene convertito in una serie di zeri e di uni.
Le righe:
for (int i = 7; i >= 0; i--)
if (c & potenze_di_due[i]) cout << '1'; else cout << '0';
eseguono la conversione.

science.unitn.it/~fiorella/guidac/…
aaa
14/01/11 2:35
TheKaneB
Postato originariamente da Xaratroom:

Il file viene stampato in "binario" ossia ogni carattere viene convertito in una serie di zeri e di uni.
Le righe:
for (int i = 7; i >= 0; i--)
if (c & potenze_di_due[i]) cout << '1'; else cout << '0'; 

eseguono la conversione.

science.unitn.it/~fiorella/guidac/…


... e direi anche che è abbastanza orrendo come metodo...
Visto che il processore ragiona in binario già di suo, sfruttiamolo, invece di usare un array con le potenze di due:
if (c & (1 << i)) cout << '1';
else cout << '0';


ma poi, come cacchio sono messe le parentesi!? Aperte al posto delle chiuse e viceversa?
int main()
}
...
while ()
}

...

{

...

{


oh ma scherziamo?! :rotfl:
Ultima modifica effettuata da TheKaneB 14/01/11 2:39
aaa
14/01/11 7:15
Xaratroom
Postato originariamente da TheKaneB:
ma poi, come cacchio sono messe le parentesi!? Aperte al posto delle chiuse e viceversa?
int main()
}
...
while ()
}

...

{

...

{


oh ma scherziamo?! :rotfl:

È sicuramente un errore di paste ... anche perché è la prima volta che vedo qualcuno fare questo errore.
aaa