欢迎来到天天文库
浏览记录
ID:57687302
大小:14.00 KB
页数:2页
时间:2020-09-01
《C语言中循环移位解析.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C语言中循环移位简洁实现C语言中没有提供循环移位的操作符,但可以通过简洁的方式实现循环移位设一个操作数x有s位则循环左移n位的操作为:(x<2、(x>>(s-n));同理右移n位位:(x>>n)3、(x<<(s-n));实际编程中可以用宏定义实现循环移位:#defineROTATE_LEFT(x,s,n)((x)<<(n))4、((x)>>((s)-(n)))#defineROTATE_RIGHT(x,s,n)((x)>>(n))5、((x)<<((s)-(n)))例如:#include#defi6、neROTATE_LEFT(x,s,n)((x)<<(n))7、((x)>>((s)-(n)))#defineROTATE_RIGHT(x,s,n)((x)>>(n))8、((x)<<((s)-(n)))intmain(){unsignedinta;scanf("%x",&a);printf("%08x",a);printf("%08x",ROTATE_LEFT(a,8*sizeof(int),4));printf("%08x",ROTATE_RIGHT(a,8*sizeof(int),8));retur9、n0;}运行结果://原数//移1位后具体样例:设有数据 a=,循环左移2位正确结果: 分步实现:b=a>>(8-2);//用来得到正常左移丢失的位和循环移位后其正确位置b="";a="a"<<2;//左移a=""a=a10、b;//a= 如果不是用中间变量一步实现:a=(a>>(8-2))11、(a<<2); 总长度N(81632) 循环左移n(a>>(N-n))12、(a>>n) 循环右移n(a<<(N-n))13、(a>>n) C语言的位运算功能是其区别于其他大多数高级程序设计语言的特色之一,用它可以方便实现一些特殊功能14、,灵活掌握是用C程序编写系统程序的基础。其他对位进行操作的还有位域法;几个对位操作的样例如下:#defineSETBIT(REG,N)REG15、=(1<
2、(x>>(s-n));同理右移n位位:(x>>n)
3、(x<<(s-n));实际编程中可以用宏定义实现循环移位:#defineROTATE_LEFT(x,s,n)((x)<<(n))
4、((x)>>((s)-(n)))#defineROTATE_RIGHT(x,s,n)((x)>>(n))
5、((x)<<((s)-(n)))例如:#include#defi
6、neROTATE_LEFT(x,s,n)((x)<<(n))
7、((x)>>((s)-(n)))#defineROTATE_RIGHT(x,s,n)((x)>>(n))
8、((x)<<((s)-(n)))intmain(){unsignedinta;scanf("%x",&a);printf("%08x",a);printf("%08x",ROTATE_LEFT(a,8*sizeof(int),4));printf("%08x",ROTATE_RIGHT(a,8*sizeof(int),8));retur
9、n0;}运行结果://原数//移1位后具体样例:设有数据 a=,循环左移2位正确结果: 分步实现:b=a>>(8-2);//用来得到正常左移丢失的位和循环移位后其正确位置b="";a="a"<<2;//左移a=""a=a
10、b;//a= 如果不是用中间变量一步实现:a=(a>>(8-2))
11、(a<<2); 总长度N(81632) 循环左移n(a>>(N-n))
12、(a>>n) 循环右移n(a<<(N-n))
13、(a>>n) C语言的位运算功能是其区别于其他大多数高级程序设计语言的特色之一,用它可以方便实现一些特殊功能
14、,灵活掌握是用C程序编写系统程序的基础。其他对位进行操作的还有位域法;几个对位操作的样例如下:#defineSETBIT(REG,N)REG
15、=(1<
此文档下载收益归作者所有