ms e compagnia, provengono sempre dal mondo RISC
devo dire che fatto l'occhio sono comodissimi
"ms" sta per most significant (byte/half)
"ls" sta per least significant(byte/half)
quel secondo "m" sta per middle, nel mezzo
direi che sono orecchiabili, ed e' la scelta
fatta da Patterson & Hennessy, tanto per dare
un nome ai vari byte e half word
sicuramente meno ambiguo di byte0
di cui non sai mai se e' il MSB o LSB 
SukkoPera:
lo standard C prevede che gli operatori dello shift
siano automaticamente promossi a int, ma int è 16 bit
bah, "int" e' ambiguo, come lo e' "short"
il C fa veramente pena da questo punto di vista
da me "int" e' sempre 32bit, difatti questo codice
printf("sizeof(int)=%d\n", sizeof(int));
testato su
{ HPPA2, MIPS32, m68k/Coldfire, PowerPC32, Intelx86, BlackfinBF5xx }
da sempre come risultato
sizeof(int)=4
con toolchain { gcc, VisualDSP++, CodeWarrior }
persino su con gcc-v3.3, su macchina stack oriented ad 8bit
con registri softfloat (68hc11 ha solo l'accumulatore)
da sempre come risultato 4
semmai ho grossi, e gravi problemi
con i puntatori a 64bit @______________@
della serie su MIPS64 (ma pure su ARM64)
sizeof(p_uint64_) non e' sempre 8
a volte e' 4, quando (uint64_t*) e' invece 8
sono i casini del C … non ho alcuna idea di come la cosa
sia gestita su Avr8, pero' mi sembra MOLTO improbabile
che uno shift sia a 16bit, tanto la macchina sotto e' ad 8bit
e tutta la parte a 32bit e' gestita software
(con un minimo di carry in/out da parte della ALU)
in ogni caso un cast non fa male 