Сдвиг, к примеру, лонга на С выглядит так:
unsigned long ROTL (unsigned long value, char bits)
{
return (((value) << (bits)) | ((value) >> (32 - (bits))));
Думаете, вы эту простейшую конструкцию эффективнее откомпилите, чем компилер? Ну-ну.. :-))
Если аффтару массив нужен, то запись на С будет конечно длиннее, но код будет тот же самый (если конечно проц не 32битный), так как от длины тут ничё не зависит.