Premetto che ho letto velocemente i post precedenti (erano tanti

) e che quindi non so esattamente perché fai quella modifica.
Mi fido di voi e ti dico cosa fanno le due funzioni....
- Codice: Seleziona tutto
random_64=rand() % 64;
La prima delle 2 restituisce il resto della divisione intera per 64. In pratica prende il valore restituito da rand, lo divide per 64, e restituisce il resto della divisione.
In pratica, se si comporta come mi aspetto, per dividere per 64 sposta a dx il valore restituito da rand() di 6 posizioni e restituisce la parte che "è uscita" a dx del numero (binario).
- Codice: Seleziona tutto
random_64=rand() & 16;
il numero 16 in binario è 00001111. Fare rand() & 16 significa fare l'AND logico tra il numero restituito da rand() e il numero 16.
In pratica dove il "16" ha degli zeri, il risultato avrà degli zeri, dove il numero 16 ha degli 1, il bit del risultato assumerà il valore del corrispondente bit di rand().
In pratica con quella sostituzione hai velocizzato l'operazione!
Luca.