枚举的定义:
一枚枚的列举 //一个个的列举
枚举的语法:
enum 枚举名
{
枚举常量//名字
};
例子:
enum weekay
{
MON,
TUES;
WED;
THURS;
FRI;
SAT;
SUN;//枚举常量
};
注意:
1、C语言中,将枚举常量当作整型来处理。
2.提高代码可读性
3.枚举常量用逗号(,)隔开
用枚举的方式:
typedef//type define
注意:
typedef 不能定义出一个新的类型
他是给已有类型起别名;
用法 :
int a;定义一个int型的变量a;
typedef int a:给int型起一个别名叫a
用途:往往用于给复杂类型起别名,
为了可移植性 给一些类型起别名;
二、位运算
主要用途,操作硬件
写程序《--------》控制硬件
写程序----控制寄存器中的某些二进制位--->关联某些硬件引脚-》电平的变化
& 按位运算
运算规则:一假则假 --------置位(0)运算
例子:
0x55
& 0x33
-----------
0101 0101
0011 0011
-----------
0001 0001
| 按位或运算
运算规则:一真则真 ----------置位(1)运算
例子:
0x55
& 0x33
-----------
0101 0101
0011 0011
-----------
0111 0111
^ 异或运算
运算规则:相同为0,不同为1·;
例子:
0x55
& 0x33
-----------
0101 0101
0011 0011
-----------
0110 0110
~ 取反运算
运算规则:
真假相对
<<左移运算
操作数1<<操作数2
操作数1 表示进行移位操作的数据
操作数 2表示要移动的位数
a<< 2 表示对a左移2位
int a = 1;
0000 0001//1
0000 0010//2
0000 0100//4
a<<2 //左移一位相当于 乘以2
//左移n位 相当于 乘以2的n次方
>>右移运算
操作数1 表示要进行移位操作的数据
操作数2 表示要进行移动的位数
算术右移:
要移动的数据,本身是有符号额类型,如果右移,最高位补符号位
逻辑右移:
要移动的数据,本身是无符号的,如果右移最高位补0
练习:1.统计int 型数据中1的个数
int a = 131451;
用函数实现循环左移