c语言中循环移位的操作符

c语言中循环移位的操作符

ID:8976054

大小:14.72 KB

页数:3页

时间:2018-04-13

c语言中循环移位的操作符_第1页
c语言中循环移位的操作符_第2页
c语言中循环移位的操作符_第3页
资源描述:

《c语言中循环移位的操作符》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、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#defineROTATE_LEFT(x,s

6、,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));return0;}运行结果:12345678//原数2

9、3456781//移1位后具体样例:设有数据  a=01111011,循环左移2位正确结果:11101101 分步实现:b=a>>(8-2);//用来得到正常左移丢失的位和循环移位后其正确位置b="00000001";a="a"<<2;//左移a="11101100"a=a

10、b;//a=11101101 如果不是用中间变量一步实现: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<

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。