C51中的INTRINS.H:内部函数(_crol_,_irol_,_lrol_,_cror_,_iror_,_lror_)左右位移

_crol_ 字符循环左移 ,_cror_字符循环右移,这两个函数是用来对二进制数移位的,但是不同的是,它可以把移出位数补到最后面或者是最前面。

函数名: _crol_,_irol_,_lrol_

原 型:

  1. unsigned char _cror_(unsigned char val,unsigned char n);
  2. unsigned int _irol_(unsigned int val,unsigned char n);
  3. unsigned int _lrol_(unsigned int val,unsigned char n);

功能:_crol_,_irol_,_lrol_ 以位形式将val 右移n 位;

例如kkk=1000 0001(二进制)

当执行_crol_(kkk,1);  //表示将kkk左移1位

结果是kkk=0000 0011(二进制)

如果在执行一次,就变成kkk=0000 0110(二进制),这里移动的都是二进制,如果是十进制或十六进制要先转化成二进制;

函数名: _cror_,_iror_,_lror_
原 型:

  1. unsigned char _cror_(unsigned char val,unsigned char n);
  2. unsigned int _iror_(unsigned int val,unsigned char n);
  3. unsigned int _lror_(unsigned int val,unsigned char n);

功 能:_cror_,_iror_,_lror_以位形式将val 右移n 位

kkk=1000 0001(二进制);

同样_cror_(kkk,1);

就变成kkk=1100 0000(二进制)

因为在C51中一个寄存器八位,在LED灯中寄存器一位控制着一个灯开关,这样就很容易实现流水灯
 

你可能感兴趣的:(算法,单片机)