嵌入式C学习之位运算
初步学习,稍微简单总结
一、位与 &
1、与运算中,a &= b,a与b按位“与”运算,结果赋值给a,即a = a & b。
2、1与无变化,与0与变成0,只有1&1才等于1,其余1&0、0&1、0&0都为0(也就是说可以这么操作:让一个变量的值变成0的话,使用 &上0 例如 i&=0。一般用在复位,即清零)
二、位或 |
1、或运算中,a |= b,a和b 按位”或“运算,结果赋值给a,即a = a | b
2、与1或变成1,与0或无变化,只有0&0才等于0,其余1&0、0&1、1&1都为1(|= 一般用在置位,即置1,1的位置1,0的位保持不变)
三、位异或 ^
(1) 0异或任何数=任何数
例如:0^0=0;0^1=1
(2) 1异或任何数=任何数取反
例如: 1^0=1,1^1=0
(3) 任何数异或自己=把自己置0
四、位取反 ~
1、位取反的计算结论是:~n = -(n+1)
例如:~2 = -(2+1),即~2 = -3
2、在二进制中就是每一位取反,0变1,1变0。
五、左移和右移 << >>
1、位运算在操作寄存器的时候,若想改变第n位,即1<<n,进制中左移n位
2、运用:若使寄存器的n位为1 ,将 1<<N位 再 | 这个数,也就是对这个数置1。若使寄存器的n位为0 只要将 1<<N位 ,取反 再

本文是关于嵌入式C语言中位运算的学习总结,包括位与(&)、位或(|)、位异或(^)、位取反(~)以及左移和右移(<< 和 >>)。内容涵盖了这些位运算的基本概念、运算规则及其在实际操作中的应用,如位清零、位置1等。
最低0.47元/天 解锁文章
2692





