1、移位运算符
左移、右移为数据转换为二进制后的整体移位,例如下程序:
定义短整型无符号数n=3,(占2字节),即0000 0000 0000 0011
移位1时,0000 0000 0000 0110=6;
移位2时,1100=12;
移位3时,0001 1000=24;
/*
*copyright(c) 2018,HH
*All rights reserved.
*作 者:HH
*完成日期:2018年9月17日
*版本号:v1.0
*
*问题描述:位运算 循环
*输入描述:;
*程序输出:
*/
#include <stdio.h>
int main()
{
unsigned short int n = 3;//2字节,0000 0000 0000 0011
int i;
for(i=0; i<10; i++)
{
printf("%d\n",n);
n<<=1; //同n=n<<1;
}
return 0;
}
/*
移位1时,0000 0000 0000 0110=6;
移位2时,1100=12;
移位3时,0001 1000=24;
……
移位9时,0110 0000 0000=1536
*/
2、按位取反、与、或、异或
/*
*copyright(c) 2018,HH
*All rights reserved.
*作 者:HH
*完成日期:2018年9月17日
*版本号:v1.0
*
*问题描述:按位取反、与、或、异或
*输入描述:;
*程序输出:
*/
#include <stdio.h>
int main()
{
unsigned short m=0x3a,n=0x02f,t;
t=~m;
printf("%x\n",t);
t=m&n;
printf("%x\n",t);
t=m|n;
printf("%x\n",t);
t=m^n;
printf("%x\n",t);
return 0;
}
3、跑马灯
/*
*copyright(c) 2018,HH
*All rights reserved.
*作 者:HH
*完成日期:2018年9月17日
*版本号:v1.0
*
*问题描述:跑马灯实验
*输入描述:;
*程序输出:
*/
#include <stdio.h>
#include <windows.h>
void show(int m);
int main()
{
unsigned int x = 0x1, y = 0x10;//初始位置的位移差
while(1)
{
show(x);
x = (x << 2) | (x >> (30));
show(y);
y = (y << 2) | (y >> (30));
Sleep(50);//Sleep()单位为毫秒,sleep()单位为秒,usleep单位为微秒:执行挂起一段时间
system("cls");//实现清屏操作
}
return 0;
}
void show(int m)
{
int i;
for (i=0; i<32; ++i)
{
if (m%2==0)
printf("○");
else
printf("●");
m/=2;
}
printf("\n");
}