int shift(int X, int bits_num, bool direction /* true: shift right, false: shift left */) {
if (direction)
return ((X >> bits_num) | (X << (sizeof(int) * 8) - bits_num));
else {
for (int i = 0; i < bits_num; i++) {
unsigned int z = X & 0x80000000;
X = (X << 1) | (z >> (sizeof(int) * 8 - 1));
}
return X;
}
}
ASM to C++
Код:
_asm{
mov eax, X
mov cl, n
rol eax, cl
mov X,eax
}
mov eax, X
mov cl, n
rol eax, cl
mov X,eax
}
Вам нужен простой сдвиг или циклический?Если 2е,то всё верно
Вроде как циклический. Можете помочь сделать на С правильно.
Разве в C есть циклические сдвиги?
А кто мешает написать? :)