Keil工程中的C语言的基础学习(持续更新)

 一、运算符的学习使用

1.1 移位运算符

左移运算符和右移运算符
使用对象:一般为进制数(10进制,2进制,16进制等..)

a = 0x01;
#define b (a<<1)  
	
//将变量a 16进制转换位2进制,得到01;
//01左移1位,得到10;
//(实际上左移1位就是换成2进制换算就是×2)(右移同理÷2)

移位运算符有什么作用?

举个例子:按键的使用,现在有二个按键:一个Key_Up,一个Key_Down

按键按下为高电平(高电平有效)

Key_Init = (Key_Up | (Key_Down<<1) );

这样有一个按键按下,我们就能根据Key_Init得到反馈,然后在进行处理。

1个变量4个状态

01:Key_Up打开,Key_Down关闭

11:Key_Up打开,Key_Down打开

10:Key_Up关闭,Key_Down打开

00:Key_Up关闭,Key_Down关闭

1种变量4个状态清晰可见。

如若不然我们还需要检测Key_Up和Key_Down两个变量,然后二个变量四个状态。

[  if((Key_Up=0)&&(Key_Down=1)) 各种if,else,=1,=0 啥的然后还&&和||的,可读性和操作性就特别差和麻烦  ]

如果按键在加上组合按键的话,在加上先后顺序,你懂的。

1.2 按位与&运算符

A=(B & C)                                                                      

&C=1C=0
B=110
B=000

例:B=0x16   C=0x38  求A

先将16进制转换为2进制数

B=0001 0110

C=0011 1000

然后进制按位与运算(根据上面表格)得到

A=0001 0000  (0x10)

有什么作用?

1、清0 (例如:1001 1111 ,我现在想让他变成1000 0000,就让 (1001 1111 &1000 0000)就可得到

2、保留指定位 (例如 一个数与 1011 1001进行按位与运算,就可使这个数 的1位保存下来,也可以保留低位和高位,具体那个位置看功能需求)

应用:

比如说我接收一个低4位的数据,用接收到数据&0xf运算,若超出最大理论值4或者等于0,否定应答,不正确的消息长度,则接收器将忽略此消息.

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

温水很好喝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值