您的位置:首页 > 编程语言 > C语言/C++

基于proteus的51单片机仿真实例二十五、C51中移位位运算符演示实例

2017-04-30 08:40 411 查看
1、c语言中的移位运算符有两种,左移运算符、右移运算符。

1)左移运算符(<<),其作用是讲一个数的各个二进制位全部左移若干位。例如a=a<<2,表示将a的二进制数左移2位,若a=15,即二进制数00001111,左移2位得到的结果是00111100,再如a=240,即二进制数11110000,左移2位后得到的结果是11000000.其中高位左移后溢出,被舍弃了,低位以0进补。

2)右移运算符(>>),其作用跟左移运算符相反,表示将一个数据的各个二进制位右移若干位,其中移到右端的低位被舍弃,高位以0进补。

 

2、左移和右移运算符有时候可以代替一些乘除运算,这样可以节省cpu的运行时间,提高代码的执行效率。例如1个数据左移1位相当于乘于2,右移一位相当于除以2(此结论只适合在运算结果没有溢出的情况)。

 

3、本实例实现将一个变量执行左移和右移操作运算,并将运算结果在P0口上输出显示

 

4、在keil c51中新建工程ex14,编写如下程序代码,并编译生成ex14.hex文件

//实例14:利用P0口显示变量的左移和右移运算的结果

#include <reg51.h>            //包含头文件

         //

void delay(void)     //延时函数

{

  unsigned int i,j;

 for(i = 0;i < 251;i++)

 for(j = 0;j <251;j++);

}

void main(void)

{

 unsigned char num;    //定义变量

 num = 60;     // 变量赋初值

 P0 = 0xff;     //开始时,P0口的8个LED全部熄灭

 delay();    // 延时一段时间

 delay();

 P0 = num << 2;    //变量左移两位后的结果送到P0口显示

 delay();    // 延时一段时间

 delay();

 P0 = num >> 2;   // 变量右移两位后的结果送到P0口显示

 while(1)    //无限循环,防止程序跑飞

 {

 }

}

 

5、在proteus中新建仿真文件ex14.dsn,电路图如下所示



6、启动仿真,观察运行结果。

可以看到,在程序刚开始运行时,8个LED全部处于熄灭状态。

但执行到变量左移2位后,运行结果如下



执行到变量右移2位后,执行结果如下

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言 proteus 单片机
相关文章推荐