C语言专题——位操作

位操作符

1.位与(&)

逻辑与(&&)

2.位或(|)

逻辑或(||)

3.位取反(~)

逻辑取反(!)

4.位异或(^)

不相同的两位异或为1

5.左移位<<

  1. C语言中移位操作要取决于数据类型:
    无符号数:左移时右侧补0(相当于逻辑左移)右移时左侧补0(相当于逻辑右移)
    有符号数:左移时右侧补0(相当于逻辑左移)右移时左侧补符号位
  2. 嵌入式中研究的移位都是无符号数。

位与位或位异或在操作寄存器时的特殊作用

寄存器操作的要求

寄存器的特点是按位进行规划和使用,但是寄存器的读写是32位一起进行的,所以在设定特定位时不能影响其他位。

特定位清0用&

特定位置1用|

特定位取反用^

用位运算可以构建特定的二进制数

用宏定义来完成位运算

直接用宏来置位,复位

  1. 用宏定义将32位的bitn位置位
#define SET_BIT_N(x,n)	(x|1<<n)
  1. 用宏定义将32位的bitn位清零
#define CLEAR_BIT_N(x,n)	 (x&~(1<<n))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值