Quale delle seguenti tecniche è l'opzione migliore per dividere un numero intero per 2 e perché?
Tecnica 1:
x = x >> 1;
Tecnica 2:
x = x / 2;
Ecco x
un numero intero.
x = x >>> 1
. Si noti inoltre che, a seconda della piattaforma e del compilatore, può essere abbastanza ragionevole ottimizzare manualmente le divisioni e le moltiplicazioni utilizzando i turni. - Pensando ai microcontroller, ad esempio, senza supporto ALU diretto per la moltiplicazione.
x /= 2
perché x >>= 1
assomiglia troppo al legame monadico;)
x = x / 2
invece che x /= 2
. Preferenza soggettiva forse :)
⬜=
combinazioni, queste dovrebbero essere usate ogni volta che è possibile. Elimina il rumore e pone l'accento sul fatto che x
viene modificato , mentre l' =
operatore generale suggerisce piuttosto che assume un valore completamente nuovo indipendentemente da quello precedente. - Sempre evitando gli operatori combinati (in modo che sia leggibile in modo da qualcuno che conosce solo gli operatori matematici) può avere il suo punto pure, ma poi avresti bisogno di abbandonare l'estremamente utile ++
, --
, +=
, anche.
x
nuovo il risultato , nessuno dei due è appropriato in questo modo: dovrebbe essere unox >>= 1
ox /= 2
, a seconda di ciò che intendi esprimere con l'operazione. Non perché sia più veloce (qualsiasi compilatore moderno compilerà comunque tutte le varianti equivalenti in assembly identici e veloci) ma perché è meno confuso.