目录
一、进之间的相互转换
1、表示形式
- 二进制:0B
- 十进制:直接写数字即可
- 16进制:0X(当数字大于十时,10用A,11用B,12用C,13用D,14用E,15用F)
2、计算
例:十进制数15,二进制表示为0B1111,16进制表示:0X0F
重点:二进制转换为十六进制:一个十六进制数等于4位二进制数,通常用8421码来计算,也可以用电脑计算机计算
例如:
表格中二进制数为:11010101,根据四位二进制数表示一个16进制数,所以将二进制数分为两组(如果不够四位将其补充成四位,也就是补0),每组从左往右依此用8421与其对应,然后从右往左每四个进行计算,计算方式为用刚才对应的数字二进制数相乘,得到一个值,将四个值加在一起,换成16进制后得到最终结果。
二、变量
1、运算符
- 算数运算符
- 关系运算符
- 逻辑运算符
- 位操作
位操作解析:
- &(与):A&B(其中A,B都为二进制数下同)
当俩个都为1时结果才为1
代码示例:
#include<stdio.h>
int main()
{
int a;
a=3&5;
printf("a=%d\n",a);
return 0;
}
打印结果:
- |(或):A|B
有一个为1,结果就为1
代码示例:
#include<stdio.h>
int main()
{
int a;
a=8|7;
printf("a=%d\n",a);
return 0;
}
打印结果:
- ^(异或):A^B
如果结果为1,则取0,为0,则取1
代码示例:
#include<stdio.h>
int main()
{
int a;
a=15^16;
printf("a=%d\n",a);
return 0;
}
打印结果:
- ~(取反):A~B
按位取反
代码示例:
#include<stdio.h>
int main()
{
unsigned int a=1;
printf("~a=%u\n",~a);
return 0;
}
打印结果:
- <<(左移)
- >>(右移)
代码示例:
#include<stdio.h>
int main()
{
int a,b;
a=13<<2;
b=25>>3;
printf("a=%d,b=%d\n",a,b);
return 0;
}
打印结果:
2、常用变量定义
-
几种特殊定义变量
- 宏定义:
- 别名:typedef
三、结构体
1.枚举和结构体的区别
同时与数组不同在结构体中可以有不同类型得数据,而数组中只允许出现相同类型得数据。
2.结构体定义
3、结构体使用
- 第一种用struct直接定义
- 第二种在结构体后直接定义
#include <stdio.h>
struct student{
char *name; //姓名
int num; //学号
int age; //年龄
char group; //所在小组
float score; //成绩
}stu1,stu2;
int main(){
//给结构体成员赋值
stu1.name = "Tom";
stu1.num = 12;
stu1.age = 18;
stu1.group = 'A';
stu1.score = 136.5;
stu2.name = "Lisi";
stu2.num = 11;
stu2.age = 11;
stu2.group = 'B';
stu2.score = 454.5;
//读取结构体成员的值
printf("%s的学号是%d,年龄是%d,在%c组,今年的成绩是%.1f!\n", stu1.name, stu1.num, stu1.age, stu1.group, stu1.score);
printf("%s的学号是%d,年龄是%d,在%c组,今年的成绩是%.1f!\n", stu2.name, stu2.num, stu2.age, stu2.group, stu2.score);
return 0;
}
打印结果:
补充:typedef在结构体的使用
#include <stdio.h>
typedef struct student{
char *name;
int num;
int age;
char group;
float score;
}temp;
temp stu1,stu2;
int main(){
stu1.name = "Tom";
stu1.num = 12;
stu1.age = 18;
stu1.group = 'A';
stu1.score = 136.5;
stu2.name = "Lisi";
stu2.num = 11;
stu2.age = 11;
stu2.group = 'B';
stu2.score = 454.5;
//读取结构体成员的值
printf("%s的学号是%d,年龄是%d,在%c组,今年的成绩是%.1f!\n", stu1.name, stu1.num, stu1.age, stu1.group, stu1.score);
printf("%s的学号是%d,年龄是%d,在%c组,今年的成绩是%.1f!\n", stu2.name, stu2.num, stu2.age, stu2.group, stu2.score);
return 0;
}