计算机基础知识
计算机中的单位
- 基础单位
bit(比特)、byte(字节)、kb、mb、gb、tb、pb… - 单位换算
1byte = 8bit
1kb = 1024byte
1mb = 1024kb
1gb = 1024mb
1tb = 1024gb
…
进制转换
- 整型有4种进制形式:
1.二进制: 由0和1两个数字组成。
2.八进制: 由0-7数字组成,为了区分与其他进制的数字区别,开头都是以0开始。
3.十进制: 都是以0-9这九个数字组成,不能以0开头。
4.十六进制:由0-9和A-F组成。为了区分于其他数字的区别,开头都是以0x开始。
二进制
二进制转八进制
方法为:3位二进制数按权展开相加得到1位八进制数。(注意事项,3位二进制转成八进制是从右到左开始转换,不足时补0)
二进制转十进制
方法为:把二进制数按权展开、相加即得十进制数
二进制转十六进制
方法为:与二进制转八进制方法近似,八进制是取三合一,十六进制是取四合一。(注意事项,4位二进制转成十六进制是从右到左开始转换,不足时补0)
八进制
八进制转二进制
方法为:八进制数通过除2取余法,得到二进制数,对每个八进制为3个二进制,不足时在最左边补零
八进制转十进制
方法为:把八进制,按权展开、相加即得十进制数。
八进制转十六进制
八进制不能直接转换为十六进制。可以采用间接转换法来进行转换
1.先把八进制转换为二进制,然后再转换为十六进制
2.先把八进制转换为十进制,然后再转换为十六进制
十进制
十进制转二进制
方法为:十进制数除2取余法,即十进制数除2,余数为权位上的数,得到的商值继续除,直到商为0为止
十进制转八进制
十进制转十六进制
十六进制
十六进制转二进制
方法为:十六进制数通过除2取余法,得到二进制数,对每个十六进制为4个二进制,不足时在最左边补零
十六进制转八进制
八进制不能直接转换为十六进制。那么十六进制也不能直接转化为八进制,可以采用间接转换法来进行转换
1.先把十六进制转换为二进制,然后再转换为八进制
2.先把十六进制转换为十进制,然后再转换为八进制
十六进制转十进制
把十六进制,按权展开、相加即得十进制数
变量
变量类型
- char、short、int、long、long long、float、double…
变量的长度
使用sizeof来获取变量的长度
- char = 1byte
- short = 2byte
- int = 4byte
- long = 4byte / 8byte C语言规定,long > = int(在64位中是8)
- long long = 8byte
- float = 4byte
- double = 8byte
int main()
{
printf("%d\n", sizeof(char));
printf("%d\n", sizeof(short));
printf("%d\n", sizeof(int));
printf("%d\n", sizeof(long));
printf("%d\n", sizeof(long long));
printf("%d\n", sizeof(float));
printf("%d\n", sizeof(double));
return 0;
}
变量和常量
- C语言中为了描述变化的值,使用变量(身高、体重…)
- C语言中为了描述不变的值,使用常量(性别、名字…)
局部变量和全局变量
- 在C语言中,一个{ }(大括号中)就是一个代码块
- 在代码块内部定义的变量叫局部变量
- 在代码块外部定义的变量叫全局变量
- 当局部变量与全局变量名字冲突时,局部变量优先
变量的作用域和生命周期
作用域
- 局部变量的作用域仅在当前代码块中
- 修改为a后即可正常打印
- 全局变量的作用域是整个工程
生命周期
- 全局变量的生命周期是整个程序的生命周期
- 局部变量的生命周期:进入局部变量所在的范围,生命周期开始;离开局部变量所在的范围,生命周期结束
常量
C语言中分为以下常量:
- 字面常量
- const修饰的常变量
- #define 定义的标识符常量
- 枚举常量
字面常量
const修饰的常变量
- 被const修饰后虽然不能修改 但本质上还是变量
- 修饰前
可以正常输出,变量变为常量,无法修改
- 修饰后
无法正常输出
#define 定义的标识符常量
- #define定义的符号一般习惯大写
可以是整数、浮点数、字符、字符串…
枚举常量
- 枚举 —— 就是可以一一列举的值
- 枚举常量不可以修改
字符串、转义字符、注释
字符串
- 单引号的是字符,双引号的是字符串
- 字符串要放在字符数组中
\0 是字符串末尾隐藏的结束标志,不添加会随机添加其他字符补全
补充 —— strlen
求字符串长度“strlen”
使用“strlen”要添加头文件 #include<string.h>
- 如果不在字符数组后加入“\0”,则字符数组会一直添加随机数,直到遇到“\0”为止
- 15并不是固定的,他是一个随机数,相同环境下存在无限种可能
转义字符
- 转义字符是C语言中表示字符的一种特殊形式;转义字符以反斜’'开头,后面跟一个字符或一个八进制或十六进制数表示;转义字符具有特定的含义,不同于字符原有的意义,故称转义字符。
- 下图中“\n”代表换行
- C语言的转义字符表
- /ddd 表示1~3个八进制的数字
- /xdd 表示2个八进制的数字
- ASCII码表
注释
- C语言中有两种注释方法
1.注释单行用“//”
2.注释多行用“/* */” (不支持潜逃注释)
选择语句
if语句
- 使用方法:
if (判断条件)
{
执行命令;
}
else if(判断条件)
{
执行命令;
}
....(可以有多个else if,如果只有两种结果,不适应else if,直接使用else)
else
{
执行命令;
}
- 事例
- 当输入“1”时
- 当输入0或其他时
循环语句
while循环
- 使用方法:
int main()
{
int line = 0;
while(line<10) //判断条件
{
printf("%d\n",line); //执行内容
line = line+1;
}
return 0;
}
函数
- 函数简介
- 使用方法
数组
- 一组相同类型元素的集合
数组的定义
数组的下标
通过数组下标可以定位到数组中的值
- 练习,使用while循环来打印数组中所有的整数
int main()
{
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
int num = 0;
while (num <= 9)
{
printf("%d\t",arr[num]);
num = num + 1;
}
return 0;
}
- \t 是转义字符,代表键盘上的“Tab”键
操作符
- 算术操作符: +、 - 、 *、 / 、 %(取余/取模)
- 移位操作符:>>、 << //移动的是二进制位
- 位操作符:&(按位与,有0则为0,同时为1才为1); ^(按位异或,相同为0,相异为1); |(按位或,有1则1,同时为0才为0) //二进制
- 赋值操作符:= 、+= 、-= 、*=、 /=、 &=、 ^=、 |=、 >>=、 <<=
- 单目操作符(只有一个操作数的操作符):! 、-、 + 、& 、sizeof、 ~、 – 、++、 * (类型)强制类型转换
- 关系操作符:>、 >= 、< 、<=、 !=、 ==
- 逻辑操作符:&&(逻辑与) 、 ||(逻辑或)
- 条件操作符(三目操作符):exp1 ? exp2 : exp3 - 如果exp1的结果为真,整个表达式的结果为exp2,如果exp1的结果为假,整个表达式的结果为exp3
- 逗号表达式:exp1 , exp2 , exp3 , …expn 整个表达式的结果是最后一个表达式的结果
- 下标引用、函数调用和结构成员:[] () . ->
%的作用
- 取模(余数)
& 的作用
按位与,二进制,同时为1则为1,反之为0
| 的作用
按位或,二进制,有一个1就为1,反之为0
^ 的作用
按位异或,二进制,相同则为0,相异则为1
常见问题
使用除法没有小数
- 当后面的数字不添加浮点数是,编译器会自动认为是整数除法
- 解决办法,在其中一个数后面加上浮点数即可