300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > C语言实现循环左移和右移

C语言实现循环左移和右移

时间:2023-01-07 08:14:00

相关推荐

C语言实现循环左移和右移

一、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);

微软帮助文档:/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 );

三、使用宏实现循环移位函数

// value循环左移bits位#define rol(value, bits) ((value << bits) | (value >> (sizeof(value)*8 - bits)))// value循环右移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();}

运行结果:

若对你有帮助,欢迎点赞、收藏、评论,你的支持就是我的最大动力!!!

同时,阿超为大家准备了丰富的学习资料,欢迎关注公众号“超哥学编程”,即可领取。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。