您的位置 首页 五金配件

c语言移位

c语言移位 流水灯循环左移右移@?,用C语言,要高效的话,只有用伪本征函数文件&?ldq≌umo;㏕…

c语言移位

流水灯循环左移右移@?,用C语言,要高效的话,只有用伪本征函数文件&?ldq≌umo;㏕intrins.h”中的_crol_(),_cror_()…等等函数,具体解释如蓝色文字,例如,要用P1口驱动8个共阳连?接的‖二极管左循环一个一个地亮,语句是㎎ ·P1=_?crol_(a,1);/¢/$a储存被移位的字符。

本文引用地址:http://www.*eepw.com.cn/art?ic﹥le?/201611/?315732-.?htm

c51中的in*tri∩ns?.h库函数

_crol_ 字符循环左移

_cro?r_ 字符循环右移

_i3r√ol_ 整数循◎环左移

_iror_ 整数循环右移

_lrol_ 长整数循环左移

_l㏒ror_ 长整数?循环右移

_nop_ 空操作№℡8051 NOP 指令

?﹤

_?t∑estb?it_ 测试并清零位8051JBC 指令

详解:

函≦数名: _crol_,_irol_,_l?rol_

原 型: unsigned? 2char _crol_(unsi⊥gned char v≮al,uns?igned c?har n?);

un?sigmlned int _irol?_(uns ?igned int val,u∣nsigned≒ char ?n);?

u?nsi∶gned int _l?rol_(unsi﹢gned int ?val?,unsigned char n)?;

功 能?:_c?r≧ol_,?_irol?_,_l♀rol_以位形式将va?l左移n∮? 位,环移(左端÷?移出的填补右端的空位),该>函数与℅80±51“R㎜L A”指令相关,上面几个函数不同于?参数类型。(调用“一次&rd=quo;∥这样的函数把v?al环移‰n位?,所谓的循环移位并不是持续的一直移位下去,要想得到这样的效果,外部须加上循环语句实现)﹢。

例:

#inc㎝l?ude

main()

{

unsigned int y;

C-5 1? 程序设计 37

y㈱=0x00ff;

?

y?=_irol_(y?,4); /*y=0x0f∟f0*/

}

函数名: _cror_,_ir£or_∴,_lror_

?

原§¬ 型: unsigned char _cror_(unsigned char? val,unsign?ed char n);

u㎞ns㏑igned i″nt﹣ _iror_(uns?igned int va∽l,unsigned ?cha?r n);

unsigned in?t _l?ror_(?1unsigned int val?,unsigned char?≯ ?n);

?功 能:_cror_,_i?ror_,_lror_以位形式将v?al右移n 位,环移,该?函数与8051&=ldquo;RR A”指令相关?,上面几个函数?不%同于参数类型。

例:

≥#include

main()?

{

≡un?signed int y;

y=0x<0ff0?0♂;

y=_iror_(y,4);? /∪*y=0x∝?0ff0c语言移位*/

?}?

函数名: _nop_

原 ?型: void _nop_(void);

功 能:_n?op_产生一个NOP ¥指令,该函数可用作C程序?的时间比较。C51 ⊙编译器在_nop_

函数工°作期间不产生函?数调用,即在程序3中直接执行了NOP 指令。

例:

P()=1;

_nop_()≈;

P※()?=0;

函数名: _testmbit_

原 型:b/it _?testb?i?t_(bit x);℉

?

功 能:_testbit_产生一〒个JBC 指令,?该㎡函数测试一个位,当置位时返回1,否则返回0mol。

o如果该?位置为1,则⊕将该位复位?为0。8051 的JBC 指令即用作此目的。

_testbit_只能用于可直接寻址的位;在表达式中使用是不允许∷的。

至于>>=,>㎏>,<<,<<=的移位运算符,不要天真以为它会循环移位,事实上?,一个8位的字符,左移一位之后,最右边一位变成0了,而非原来﹣最左边的?一位。∏如果左移8位,就意味着这个8⊿位的字符变成0x00了。具体的,如果用C实现循环移位呢?
div:eq(0) > div:eq(3) ′> table:eq(2) ㏄> tb?ody:eq(0) > tr∵:eq(0) > td:eq(0) >? div:eq(0) > #c?ontent?:eq(0) ??> br:eq(2)” anc⌒hortype=”previ?ous?” jquery1?249565275∠5?78=”8″?>思路是:

  比如将a=0x45循环左移二位。

  a循环左℃?移n位,≤即将原来右面(8-n)位左移n+位,?而将原来左端的n位移到最右面?n位。

  1、∞将a的左端n位先放到b中的低n位中

   b=a>>?(8-¥n);

  2、将a左移n?位,其右面低n位被补0

   c=a<

μ

  3、将b,c进行或运算

   a=c|b;

程序如下:

?  main∈(¤)

  {?

  unsi∫gned≠ char a=0×x4?5,b,c;

  u∧nsign%ed i?n?t∨? n=2?∷;

  b?=a>£>(8-n)

  c=a<

  a=c|?b;

 × }

关于更多c语言移位内容,可以收藏本网页。2017年全运会 单片机C语言移位的实现

c语言移位c语言移位
本文来自网络,不代表天津五金网立场,转载请注明出处:http://www.mgnqyz.com/mgnqyz/1166.html

作者: mgnqyz

联系我们

联系我们

0898-88881688

在线咨询: QQ交谈

邮箱: email@wangzhan.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部