这里有两段代码,一段是宏,一段是函数。他们似乎做同样的事情,但在运行它们之后,它们似乎表现出不同的行为,我不知道为什么。有人可以帮我吗?谢谢!
#define ROL(a, offset) ((((Lane)a) << ((offset) % LANE_BIT_SIZE)) ^ (((Lane)a) >> (LANE_BIT_SIZE-((offset) % LANE_BIT_SIZE))))
Lane rotateLeft(Lane lane, int rotateCount)
{
return ((Lane)lane << (rotateCount % LANE_BIT_SIZE)) ^ ((Lane)lane >> (LANE_BIT_SIZE - (rotateCount % LANE_BIT_SIZE))) ;
}
注意:Lane 类型只是一个无符号整数,LANE_BIT_SIZE 是一个数字,以位数表示 Lane 的大小。