Spostare bit alto all'interno di un byte

Ciao, dato un byte x con tutti gli 8 bit a ZERO, alzo il primo bit a UNO, avrò cosi la seguente situazione: 0000 0001
Per spostare il bit alto nelle altre posizioni, posso fare in due modi, o lo moltiplico per due, cosi che: x *= 2; che mi restituirà: 0000 0010 la prima volta, 0000 0100 la seconda volta e cosi via.
Oppure posso shiftare i bit in questo modo: x = x << 1; che dovrebbe dare lo stesso risultato ogni volta che viene chiamato.

Ci sono differenze a livello di complilatore sull’efficienza di queste istruzioni ?

Non credo, qualunque compilatore furbo le implementerà allo stesso modo, ovvero con uno shift. Eventualmente puoi guardare l’assembly generato per toglierti il dubbio.

Nota che puoi anche scrivere:

x <<= 1;

Grazie Sukko !