关于ARM开发过程中C语言如何使用及其需要注意的一些问题之 位运算符和位运算

本文详细介绍了STM32处理器开发中常用的位运算,包括按位与、按位或、按位取反以及左移和右移运算。这些运算在寄存器操作、数据处理等方面起着关键作用,例如通过按位与进行清零操作,按位或实现置1操作,以及通过移位运算改变数值的位宽。理解这些位运算对于嵌入式系统的程序设计至关重要。
摘要由CSDN通过智能技术生成

位运算是指二进制之间的运算。在嵌入式系统设计中,常常要处理二进制的问题,如将某个寄存器的某一位置1或置0,将数据左移5位等。常用的位运算符如图所示。
在这里插入图片描述

按位与运算符(&)

**按位与运算规则:**参加运算的两个操作数,每个二进制位进行“与”的运算,如果两位都是1,则运算结果为1,否则为0.
例: 1001&1011运算过程如图所示。
在这里插入图片描述
但仅仅知道上述运算规则是远远不够的,在STM32系列处理器的开发过程中,按位与运算主要是用来清除某一位,或者说主要用来实现清零。

按位或运算符(|)

按位或运算符的规则: 参加运算的两个操作数,每个二进制位进行“或”运算,如果两位都是0,则运算结果也为0,否则为1。
例: 1000|1010运算过程如图所示。
在这里插入图片描述
但仅仅知道上述运算规则是远远不够的,在STM32系列处理器的开发过程中,按位或运算主要是用来将某一位置1,或者说主要用来实现置1操作。

按位取反运算符(~)

按位取反运算符用来对一个二进制数按位取反。
例: ~1000表示将1000按位取反,得到结果0111.

左移右移运算符(<<)、(>>)

左移运算(<<)用来将一个数左移若干位,右移运算(>>)用来将一个数右移若干位。
例: 假设val是个unsigned char型数据,其对应的二进制数是10010110,则val=val<<3,表示将val左移三位然后赋值给val,注意在左移过程中,高位移除后则丢弃,低位补0 。最后val=10110000 。
例: 假设val是个unsigned char型数据,其对应的二进制数是10010110,则val=val>>3,表示将val右移三位然后赋值给val,注意在右移过程中,低位移除后则丢弃,高位补0 。最后val=000100101 。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

梦影樱飞

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

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

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

打赏作者

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

抵扣说明:

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

余额充值