【发布时间】:2011-08-23 14:15:50
【问题描述】:
我正在寻找实现循环移位到位二进制数左侧的算法 (c语言)。 该算法将像 >> 右侧的插槽将不填充零,而是填充从左侧移动的数字。
向右移动。
【问题讨论】:
-
这里的问题是什么?你已经尝试了什么? Stack Overflow 是一个讨论与编程相关的具体问题的网站;它不是“免费代码服务”。如果那是您正在寻找的东西,那么请寻找其他地方。
标签: c
我正在寻找实现循环移位到位二进制数左侧的算法 (c语言)。 该算法将像 >> 右侧的插槽将不填充零,而是填充从左侧移动的数字。
向右移动。
【问题讨论】:
标签: c
这里的想法是将高 n 位(对于 n 位移位)和or 他们放在移位数字的右侧。
这应该给你一个开始。
【讨论】:
or 运算符添加最高(长度 - n)位。我不确定我是否理解您的问题。
and 放入右移高位。
#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);
}
【讨论】:
return (n<<1) | (n<0);