没有合适的资源?快使用搜索试试~ 我知道了~
C语言位操作相关学习记录
需积分: 0 0 下载量 30 浏览量
2024-03-22
11:00:37
上传
评论
收藏 16KB DOCX 举报
温馨提示
试读
3页
C语言位操作相关学习记录
资源推荐
资源详情
资源评论
4.2.1 位操作符
```c
1.位与 &
* 注意:位与符号是一个&;两个&& 是逻辑与。
* 只有 1 和 1 位于结果为 1,其余全是 0。
* & 和 && 的区别:位与时两个操作数是按照二进制位彼此对应位相与的,逻辑与是两个
操作数作为整体来相与的。
(举例: 0xAA & 0xF0 = 0xA0; 0xAA && 0xF0 = 1 )
2.位或 |
* 注意:位或符号是一个|;两个|| 是逻辑或。
* 只有 2 个 0 相位或才能得到 0,只要有 1 个 1 结果就一定是 1.
3.位取反 ~
* 注意:C 语言中位取反 ~; 逻辑取反是!
* 按位取反是将操作数的二进制位逐个按位取反(1 变成 0,0 变成 1);
* 而逻辑取反是真(在 C 语言中只要不是 0 的任何数都是真)变成假(在 C 语言中只有 0
表示假)、假变成真。
4.位异或 ^
* 位异或真值表: 1^1=0,0^0=0,1^0=1;0^1=1 (相同为 0,不同为 1)
5.左移 << ,右移 >>
* C 语言的移位要取决于数据类型
* 对于无符号数,<< 时右侧补 0(相当于逻辑移位)
* 对于无符号数,>> 时左侧补 0(相当于逻辑移位)
* 对于有符号数,<< 时右侧补 0(叫算术移位,相当于逻辑移位)
* 对于有符号数,>> 时左侧补符号位(如果是正数就补 0,负数就补 1,叫算术移位)
注意:嵌入式中研究及使用的移位都是无符号数。
```
**4.2.2 位与位或位异或在操作寄存器时的特殊作用**
```c
1.特定位清零用 &
* 举例:32 位寄存器中的值为 0xAAAAAAAA 将 bit8~bit15 清零,其他位不变。
* 则 0xAAAAAAAA & 0xFFFF00FF = 0xAAAA00AA
2.特定位置 1 用 |
* 将 0xAAAA00AA 将 bit8~bit15 置 1,其他位不变。
* 0xAAAA00AA | 0x0000FF00 = 0xAAAAFFAA
资源评论
madao1024
- 粉丝: 382
- 资源: 23
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功