学习嵌入式的第十六天——C语言——位运算
typedef
对数据类型命名,取另外的名字
//type define
//类型 定义 --- 不是类型定义
//作用,给已有类型起别名
用法:
typedef int a; //a就是int的别名 --代表int类型
位运算
二进制位的运算
嵌入式:
通过位运算 控制 硬件
对数据进行二进制位上的操作
浮点数不能做位运算
&(与 一假则假 )
一般用于清零操作
某一位与上一个0,得0
|(或 一真则真)
一般用于置1操作
某一位或上一个1得1
~(取反 真假相对)
对1取反得0,对0取反得1
^(异或 相同为假 不同为真)
不用第三方,实现两个数的交换
加密
int a = 0x35;
0011 0101 //0x35
^0000 0110 //0x6
-------------------
0011 0011 //0x33
0000 0110 //0x6
------------------
0011 0101 //0x35
<<(左移 表示二进制位的向左移动)
a<<n
表示,将数值 a 左移 n位
int a = 1;
0000 0001 //1 0
0000 0010 //2 1
0000 0100 //4 2
0000 1000 //8 3
左移,每左移一位 相当于 乘以 2
>>(右移 表示二进制位的向右移动)
高位补什么?
逻辑右移 区别在于看要移动数据是否有符号 ---默认最高位 补0
算术右移 //有符号 --- 最高位 补 符号位