C语言之位操作

本文详细介绍了C语言中的位操作,包括位与、位或、位取反、位异或以及移位操作,并通过实例讲解了如何利用位运算在寄存器操作中改变特定位,以及如何构建特定的二进制数。最后,文章提到了用宏定义来简化位运算的方法。
摘要由CSDN通过智能技术生成

C语言位操作
1. 位操作符
1.1 位与&
(1)位与是& 逻辑与是&&
(2)真值表:1&0=0 1&1=1 0&0=0 0&1=0
(3)只有1和1位与结果为1,其余全是0。
(4)位与时两个操作数是按照二进制位彼此对应位相与的,逻辑与是两个操作数作为整体来相与的。(0xAA&0xF0=0xA0,
0xAA && 0xF0=1)
1.2 位或|
(1)位或是| 逻辑或是||
(2)真值表:1|0=1 1|1=1 0|0=0 0|1=1
(3)只有0和0位或结果为0,其余全是1。
(4)位或时两个操作数是按照二进制位彼此对应位相或的,逻辑或是两个操作数作为整体来相或的。(0xAA&0xF0=0xA0,
0xAA && 0xF0=1)
1.3 位取反~
(1)C语言中位取反是~,逻辑取反是!
(2)按位取反是将操作数的二进制位逐个按位取反;逻辑取反是真变成假,假变成真。
*一个非零数两次按逻辑取反得到的是1。
一个非零数两次按位取反得到的是它自己。
1.4 位异或^
(1)真值表:1^1=0 0^0=0 1^0=1 0^1=1
(2)两个数如果相等就为0,不等结果就为1。记忆技巧:异或就是相异就或起来。

总结:
位与:(任何数,其实就是1或0)与1位与无变化,与0位与变成0
位或:(任何数,其实就是1或0)与1位或变成1,与0位或无变化
位异或(任何数,其实就是1或0)与1位异或会取反,与0位异或无变化
1.5 左移位<< 右移位>>
C语言中的移位取决于数据类型
对于无符号数,左移时右侧补0(相当于逻辑移位)
对于无符号数,右移时左侧补0(相当于逻辑移位)
对于无符号数,左移时右侧补0(叫算术移位,相

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值