如何用c语言实现循环左移

如何用c语言实现循环左移,第1张

循环左移时,用从左边移出的位填充字的右端,而循环右移时,用从右边移出的位填充字的左侧。这种情况在系统程序中时有使用,在一些控制程序中用得也不少。设有数据说明:

a=01111011,循环左移2位正确结果:11101101

过程:

b=a>>(8-2)用来得到正常左移丢失的位和循环移位后其正确位置b=00000001

a=a<<2左移a=11101100

a=a|ba=11101101

如果不是用中间变量a=(a>>(8-2))|(a<<2)

总长度N(81632)

循环左移n:(a>>(N-n))|(a>>n)

循环右移n:(a<<(N-n))|(a>>n)

C语言的位运算功能是其区别于其他大多数高级程序设计语言的特色之一,用它可以方便实现一些特殊功能,灵活掌握是用C程序编写系统程序的基础。

扩展资料:

C语言高效编程技巧:

一:以空间换时间

计算机程序中最大的矛盾是正冲空间和时间的矛盾,那么,从这个角度出发逆向思维来考虑程序的效率问题

二:数学方法解决问题

数学是计算旁清核机之母,没有数学的依据和基础,就没有计算机发展,所以在编写程序的时候,采用一些数学方法会对程序的执行效率有数量级的提高。

三:使用位 *** 作

实现高效的C语言编写的第三招----使用位 *** 作,减少除法和取模的运算。

在计算机程序中,数据的位是可以 *** 作的最小数据单位,理论上可以用“位运算”来完成所有的运算和 *** 作。一般的位 *** 作是用来控制硬件的,或者做数运掘据变换使用,但是,灵活的位 *** 作可以有效提高程序运行的效率。

参考资料来源:百度百科-c语言程序设计

0<<5左移5位,即000000

0<<6左移6位,即0000000

左移后是用二进制表示的,

具体的这个程序中有什么用,应该看程序缺启本身缺闹,

就像#define PI_FRMERR (0 <<5)

用伏扮如000000代替PI_FRMERR可能与某个数进行与 *** 作或其他的。

C语言中,“<<”为左移运算符,“>>”为右移运算符。羡手

具体使用方法如下:

1、左移运算符(<<)

将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)。

例:a = a <<2 将a的二进制位左移2位,右补0,

左移1位后a = a * 2

若左移时舍弃的高位不包含1,则每左移一位,相当于该数乘以2。

2、右移运算符消凳(>>)

将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。

*** 作数每右移一位兄桥嫌,相当于该数除以2。

例如:a = a >>2 将a的二进制位右移2位。

左补0 or 补1 得看被移数是正还是负。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/8240619.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存