位运算

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");
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值