La differenza tra il numero intero si moltiplica (dimenticandosi temporaneamente della divisione) ancora a favore dello spostamento e, in tal caso, quanto è grande la differenza?Perché Java e C# hanno operatori di bitshifts?
Sembra semplicemente un'ottimizzazione di basso livello, anche se si desidera che il compilatore bytecode (C#/Java) o il jit non lo catturino nella maggior parte dei casi?
Nota: ho provato l'uscita compilato per C# (con GMCs Mono compilatore C# versione 2.6.7.0) e gli esempi si moltiplicano non ha utilizzato spostamento per moltiplicare anche quando moltiplicando per un multiplo di 2.
C# http://csharp.pastebin.com/hcrRnPrb
cil http://csharp.pastebin.com/0js9F2c1
PS Ho dimenticato come potrebbe essere utile usarlo su byte, ma ho ancora qualche problema a usarlo per Numbers.
Moltiplica non è l'unico utilizzo degli operatori di bitshifts. – Cristian
Talvolta gli operatori bitshift aumentano la chiarezza su una moltiplicazione equivalente. –
Stai guardando l'IL, hai davvero bisogno di vedere il codice macchina dopo la compilazione JIT per verificare se il framework li sta ottimizzando correttamente. –