C语言和单片机中的左移右移

Python011

C语言和单片机中的左移右移,第1张

# include "reg51.h" // 包含头文件

#define uchar unsigned char

void delay02s(void) // 延时0.2s子程序

{

unsigned char i,j,k;

for ( i=2;i>0;i-- )

for (j=200;j>0;j-- )

for (k=250;k>0;k-- );

}

void main (void) // 主函数

{

uchar i,j;

while (1) // 死循环

{

j=0x01; // j初始化为0x01,左移初始值

for(i=0;i<8;i++) // for循环语句,完成8个循环

{

P1= ~ j; // 对变量j 中的值按位取反后,从P1口输出

delay02s( ); // 延时0.2s

j= j<<1; // 左移1位

}

j=0x80; // 设置右移初始值j为0x80

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

{

P1= ~ j;

delay02s( );

j= j>>1; // 右移1位

}

}

}

data

=

nBitmapDot[i]

>>

1

//

nBitmap[i]右移一个二进制位,与

data

=

nBitmapDot[i]

/

2

同效。

data

=

nBitmapDot[i]

<<

1

//

nBitmap[i]左移一个二进制位,与

data

=

nBitmapDot[i]

*

2

同效。

要说明的是移位操作(<<

>>)效率更高。