一、win下stdlib.h中的循环移位函数
unsigned int _rotl(
unsigned int value
,
int shift
);
unsigned __int64
_rotl64(
unsigned __int64 value
,
int shift
);
unsigned int _rotr(
unsigned int value
,
int shift
);
unsigned __int64
_rotr64(
unsigned __int64 value
,
int shift
);
微软帮助文档:https://www.baidu.com/link?url=vcaoeKfMNevowWj1d485LtW-iVZdaJtVdrLRyzwBP3OJFRKmIyZKMSUI19vJhHhpbq9pHmhiX42hXTu3Vc0Lc3qlWEbQSeiAimwO9Niz1Nb3Ej6ffw5HBAC443Wo3dX1pRUMxiURPHESttP7koKCaq&wd=&eqid=f5c336ef0000c801000000065f917ffd
二、KeilC51单片机C语言库intrins.h中的循环移位函数
unsigned char _cror_(unsigned char ,unsigned char );
unsigned int _iror_(unsigned int ,unsigned char );
unsigned long _lror_(unsigned long ,unsigned char );
unsigned char _crol_(unsigned char ,unsigned char );
unsigned int _irol_(unsigned int ,unsigned char );
unsigned long _lrol_(unsigned long ,unsigned char );
三、使用宏实现循环移位函数
#define rol(value, bits) ((value << bits) | (value >> (sizeof(value)*8 - bits)))
#define ror(value, bits) ((value >> bits) | (value << (sizeof(value)*8 - bits)))
main.cpp测试代码
int main(int argc
, char *argv
[])
{
QCoreApplication
a(argc
, argv
);
int value
= 0x01;
int rst1
= rol(value
, 1);
int rst2
= rol(value
, 31);
int rst3
= rol(value
, 33);
printf("0x%x, 0x%x, 0x%x\n", rst1
, rst2
, rst3
);
unsigned int temp
= 0x80000000;
unsigned int rst4
= ror(temp
, 1);
unsigned int rst5
= ror(temp
, 31);
unsigned int rst6
= ror(temp
, 33);
printf("0x%x, 0x%x, 0x%x\n", rst4
, rst5
, rst6
);
return a
.exec();
}
运行结果:
若对你有帮助,欢迎点赞、收藏、评论,你的支持就是我的最大动力!!!
同时,阿超为大家准备了丰富的学习资料,欢迎关注公众号“超哥学编程”,即可领取。