【单片机】04左移右移与或异或

左移运算:<<

a<<b
a=182;转换成二进制形式 1011 0110
b=1时,最左边的1被移走了,最右边添0。a<<b=01101100
b=4时,最左边的4位被移走了,最右边添0。a<<b=0110 0000

右移运算:>>

运算法则:无符号操作数右移若干位后,低位丢弃,高位补0。
把a中的高4位和b中的低4位取出来,a中的高4位在前,b中的低4位在后,合并出一个新的数c,怎么做呢?

P1<<=1;  //把P1口的内容左移一位再赋值给P1
a>>=4;  //把a的内容右移4位再赋值给a变量

位运算

在二进制位的级别上进行的一系列运算。

按位与运算:&

运算法则:有 0 出 0,全 1 出 1

aba&b
000
010
100
111

x&0=0 //× 代表 0 或者1
x&1=x //x 代表0 或者1
xxxx xxxx x代表0或者1
&1111 0000
xxxx 0000

按位或运算:

运算法则:有1 出 1,全0出 0

aba | b
000
011
101
111

x | 0=x //x代表0或者1
x | 1=1 //x代表0或者1

xxxx xxxx
|0011 1100
xx11 11xx

按位异或运算:

运算法则:相同为0,不同为1

aba^b
000
011
101
110

P1=P1^0x5b
11110000
^ 01011011
10101011
image-20230328221238279

按位取反运算:~

运算法则:把1变0,把0变1

a~a
01
10

P1=~P1;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cmXRAc4K-1680017998979)(./assets/image-20230328221431845.png)]

按位与&:将一个二进制数的指定位清0
按位或|:将一个二进制数的指定位置1
按位异或^:将一个二进制数的指定位取反
按位取反~:将一个二进制数的所有位都取反

P1=P1&0xf0
P1=P1|0x3a
P1=P1^0x5b
P1=~P1

P1&=0xf0
P1|=0x3a
P1^=0x5b
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值