单片机运用比较多的运算符:位运算符

位运算符

一、图表

位运算符

描述

&

按位与

|

按位或

^

按位异或

~

取反

<<

左移

>>

右移

说明:在位运算符中,除~以外,均为双目(元)运算符,及要求两侧各有一个运算量;且运算量只能是整型或字符型的数据,不能为实型数据。

二、按位与

1、“&”,双目运算符,其功能是参与运算的两数个对应的二进位相与。只有对应的两个二进位为1时,其值为1;否则皆为0.

例如:1&1=1,1&0=0,0&0=0;

2、计算

10&7=2

二进制为:

10=0000 1010,7=0000 0111;

0000 1010

& 0000 0111

  0000 0010=2

3、按位与的作用

通常用来对某些位清0或保留某些位。

例如:有一个数时0110 1101,希望保留从右边开始第三四位:

0110 1101

& 0000 1100

  0000 1100

总结:

  1. 想保留的那几位都为0,那除这几位外,皆为0,这几位为1或0皆可。
  2. 想保留的那几位都为1,那除这几位外,皆为0,这几位只能为1。
  3. 想保留的那几位有1和0,那除这几位外,皆为0,这几位,为1的取1,其它取0.

三、按位或

1、“|”,双目运算符,其功能是参与运算的两数各对应的二进位相或。只要对应的两个二进位有一个为1,其值为1,否则皆为0.

0|0=0,0|1=1,1|1=1

2、计算:6|2=6

二进制为:

6=0000 0110,2=0000 0010

0000 0110

|    0000 0010

     0000 0110

常用来让源操作数的某些位置为1,其它位不变。

四、按位异或

1、“^”,双目运算符,其功能是参与运算的两数各对应的二进位相异或;当两对应的二进位相异时,结果为1.

0^0=0,0^1=0,1^1=0;

2、计算:10^5=15

二进制:10=0000 1010,5=0000 0101

0000 1010

^    0000 0101

     0000 1111

充分利用按位异或的特性,可以实现以下效果:

  1. 设置一个二进制掩码mask,执行s=s^mask,设置特定位置是1,可以使特定位的值取反;设置掩码中特定位置的其它位是0,可以保留原值。

设有0111 1010,想使其低四位反转,即1变0,0变1.可将它与0000 1111进行^运算。

  1. 不引入第三变量,交换两变量的值。想将a,b的值互换,可以用以下语句:

a=a^b;

b=b^a;

a=a^b;

五、按位取反

 “~”,单目运算符,具有右结合性,其功能是对参与运算的数的各二进位按位求反。

例如:~9的运算为~(0000 1001),结果为1111 0110;

六、左移运算符

1、“<<”,双目运算符,功能:把“<<”左边运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数。

无符号数:是针对二进制来讲的,无符号数的表数范围是非负数;全部二进制均代表数值,没有符号位。即第一个"0"或"1"来表示正负。

通俗来说,就是整串数左移,高位的不要,低位补0

2、计算:

n=1;二进制为:0000 0001

n<<2:  0000 0001——>0000 0100=4

n<<6:  0000 0001——>0100 0000=6

n=128; 二进制为:1000 0000

n<<1;  1000 0000——>0000 0000

注意:左移一位相当于该数乘以2,但此结论只适用于该数左移时被溢出舍弃的高位中不包含1的情况。这里就出现了溢出现象,如果数据最高位和符号位不同的话,说明这个数字的绝对值已经超过 64 了,那么左移一位后必然溢出。所以一个【有效的】左移最高位和数据最高位必然一致。故算术左移和逻辑左移一样。溢出和计算结果不正确是两码事。

七、右移运算符

1、“>>”,双目运算符,功能:把“>>”左边运算数的各二进位全部右移若干位,由“>>”右边的数指定移动的位数。

通俗来说,就是整串数右移,高位补0,低位不要。

2、计算:

n=2;二进制:0000 0010

n<<1:  0000 0010——>0000 0001=1

其原理与左移类似。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值