循环移位c

时间:2011-08-23 14:15:51

标签: c

我正在寻找在位二进制数左边实现循环移位的算法 (用c语言)。 算法的行为类似于>>右侧插槽不会填充零,而是从左侧移动数字。

并向右移动。

2 个答案:

答案 0 :(得分:3)

这里的想法是将高n位(对于n位移位)和or取在移位数的右侧。

那应该给你一个开始。

答案 1 :(得分:1)

#define NUM_BITS_IN_INT ((sizeof(int) * 8)

int rotleft(int num, int shift)
{
    return (num << shift) | (num >> (NUM_BITS_IN_INT - shift));
}

int rotright(int num, int shift)
{
    return (num >> shift) | (num << (NUM_BITS_IN_INT - shift);
}