Non ho capito bene la questione ... La domanda qual è esattamente? Cosa c' entrano le divisioni e il resto?
Non ho capito bene la questione ... La domanda qual è esattamente? Cosa c' entrano le divisioni e il resto?
No MP tecnici (non rispondo nemmeno!), usa il forum.
Se scrivo 55, il numero dovrà essere tradotto in 110111 per essere salvato in memoria.
La conversione intero/binario comporta una serie di divisioni, ovvero:
55%2 = 1 (salvo bit 1)
55/2 = 27
27%2 = 1 (salvo bit 1)
27/2 = 13
13%2 = 1 (salvo bit 1)
13/2 = 6
6%2 = 0 (salvo bit 0)
6/2 = 3
3%2 = 1 (salvo bit 1)
3/2= 1
1%2 = 1 (salvo bit 1)
1/2 = 0
In termini di prestazioni è meglio se scrivo...
...oppure se scrivo...codice:n = 576460752303423488;
codice:n = (ulong)1 << 59;
Nel frattempo mi son reso conto che la domanda è stupida:
se nel codice scrivo n=123 sarà il compilatore a tradurre 123 in binario, pertanto in esecuzione non verrà effettuata nessuna conversione.
Peraltro la conversione dovrebbe essere da esadecimale a binario![]()
![]()
Ultima modifica di Luciano79; 18-08-2016 a 16:24
Tutto ciò che scrivi come costante numerica è solo una convenzione, le operazioni fra costanti vengono eseguite a tempo di compilazione quindi non c'è overhead. Ovvero scrivere x=2+2 e scrivere x=4 è la stessa cosa. Lo stesso vale se usi basi diverse da quella decimale.
"Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares