ciao888 (Normal User)
Pro
Messaggi: 69
Iscritto: 14/10/2010
|
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 :
Codice sorgente - presumibilmente C++ |
#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:
Codice sorgente - presumibilmente C/C++ |
if (c & potenze_di_due[i]) cout << '1'; else cout << '0';
cout << " ";
|
che senso ha?grazie in anticipo
Ultima modifica effettuata da ciao888 il 13/01/2011 alle 22:14 |
|
Xaratroom (Ex-Member)
Expert
Messaggi: 526
Iscritto: 03/04/2008
|
|
|
TheKaneB (Member)
Guru^2
Messaggi: 1792
Iscritto: 26/06/2009
|
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:
Codice sorgente - presumibilmente C/C++ |
for (int i = 7; i >= 0; i--)
if (c & potenze_di_due[i]) cout << '1'; else cout << '0';
|
|
... 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:
Codice sorgente - presumibilmente C/C++ |
if (c & (1 << i)) cout << '1';
else cout << '0';
|
ma poi, come cacchio sono messe le parentesi!? Aperte al posto delle chiuse e viceversa?
Codice sorgente - presumibilmente C/C++ |
int main()
}
...
while ()
}
...
{
...
{
|
oh ma scherziamo?! Ultima modifica effettuata da TheKaneB il 14/01/2011 alle 3:39 |
|
Xaratroom (Ex-Member)
Expert
Messaggi: 526
Iscritto: 03/04/2008
|
Postato originariamente da TheKaneB:
ma poi, come cacchio sono messe le parentesi!? Aperte al posto delle chiuse e viceversa?
Codice sorgente - presumibilmente C/C++ |
int main()
}
...
while ()
}
...
{
...
{
|
oh ma scherziamo?! |
È sicuramente un errore di paste ... anche perché è la prima volta che vedo qualcuno fare questo errore. |
|