(18)十 =(10010)二
10010->右移三位=00010
(00010)二=(2)十
可见,执行移位 *** 困敏作后,18变成了2,相当汪昌枝于迅裂 18除以2的三次方的结果下取整。
51单片机C语言实现循环8个流水灯左移三次,后右移三次。
例程:
#include<reg51.h> //51单片机头文件#include <intrins.h> //包含有左右循环移位子函数的库
#define uint unsigned int //宏定义
#define uchar unsigned char //宏定义
sbit beep=P2^3
void delay(uint z) //延时函数,z的取值为这个函数的延时ms数,如delay(200)大约延时200ms.
{ //delay(500)大约延时500ms.
uint x,y
for(x=zx>0x--)
for(y=110y>0y--)
}
void main() //主函数
{
uchar a,i,j
while(1) //大循环
{
a=0xfe //赋初值
for(j=0j<3j++) for(i=0i<8i++) //左移三次
{
P1=a //点亮小灯
beep=0 宏岁知 //开启蜂鸣器
delay(50) //延时50毫秒
beep=1 //关闭蜂鸣器
delay(50) //再延时50毫秒
a=_crol_(a,1) //将a变量循环左移一位
}
蔽消 a=0x7f
for(j=0j<3j++) for(i=0i<8i++) //右移三次
{
P1=a 雀戚 //点亮小灯
beep=0 //开启蜂鸣器
delay(50) //延时50毫秒
beep=1 //关闭蜂鸣器
delay(50) //再延时50毫秒
a=_cror_(a,1) //将a变量循环右移一位
}
}
}
51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8031单片机,后来随着Flash rom技术的发展,8031单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。
算法是将原数右移size-n位,所得的值瞎塌中磨山与原数左移n位的值按位衫喊或。 下面是测试程序,测试正确。(上述算法在函数fun()中) #include unsigned int fun(unsigned int i, int n) { n%=sizeof(i)*8/*处理n大于31的情况*/ return isizeof(i)*8-n} m...欢迎分享,转载请注明来源:内存溢出
评论列表(0条)