我正在寻找在位二进制数左边实现循环移位的算法 (用c语言)。 算法的行为类似于>>右侧插槽不会填充零,而是从左侧移动数字。
并向右移动。
答案 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);
}