一、进制与进制转换
二进制0B 十六进制0X 十进制照常写
二进制转十六进制
一位十六进制数等于4位二进制数,通过8421码来计算: 若二进制数为11010101 若从右往左数不够4位一组,空几位就补几个0 如101101,补零则为00101101,再进行8421的十六进制转换
二、位运算
一、位与 &
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位 ,取反 再 & 上这个数。
总结
简单实例:
#include <stdio.h>
int main()
{
int num = 0x6f8;
num |= (1 << 1);
num &= ~(1 << 7);
num ^= (7 << 2);
printf("结果为:%x\n",num);
return 0;
}
输出结果为:666
三、结构体
定义结构体变量可在之后的结构体参数值进行设置
枚举和结构体的区别 枚举是在一个数据类型中只选择一部分需要的数据。结构体是把多个不同类型的数据集合在一个类型之中。
结构体结构:
struct name { #name是该结构体名字
int a; #{}内是结构体成员,成员可以是基本数据类型,也可是数组、指针、枚举等
char b;
float c;
}x; #定义的变量
使用
|