目录
前言
1.精度
2.运算
2.易错点
3.思维导图
前言
到目前为止我们一共学习了四种数据类型,他们分别是表示整数的整型;表示小数的浮点型;表示字符的字符型;和表示布尔数的布尔型。
表示整数的整型,它的变量类型名称是
int
,是英文整数integer的简写,在输出中使用%d
来表示,是英文十进制(decimal)的简写。
int number_a=2023;
printf("%d\n",number_a);
表示小数的浮点型,它的变量类型名称是
float
,就是浮点的英文,在输出中使用%f
来表示,是float的首字母简写。
float number_b=3.14;
printf("%d\n",number_b);
表示字符的字符型,它的变量类型名称是
char
,是英文character的简写,在输出中使用%c
来表示,也是首字母简写。
char char_a='A';
printf("%c",char_a);
还有一种C语言发展晚期才出现的数据类型类型,代表布尔数的布尔型,布尔数里面,零就是假(
false
),非零就是真(true
),因此在输出的时候仍然使用%d
来表示。
bool bool_a=true;
printf("%d\n",bool_a);
printf("%d\n",2023);
printf("%f\n",3.14);
printf("%c\n",'A');
printf("%d\n",true);
1.打印一个整型常量
2.打印一个浮点型常量,这里会输出3.140000
3.打印一个字符型常量
4.打印一个布尔型常量
之前我们提到,这些数据类型都是有范围的,比如整型int是负三万到正三万,浮点型float是整数部分+小数部分只能有7位数字。那如果我们需要计算的数字超过了这个范围呢?接下来我们就要学习精度的概念。
1.精度
1.1十进制与二进制的转换
例如 十进制 二进制
0 0
1 1
2 2(逢2进1 原来位置变0)-->10
3 11
4 12(逢2进1 原来位置变0)-- >20(逢2进1 原来位置变0)-->100
5 101
6 102(逢2进1 原来位置变0)-- >110
…… ……
你应该听过“二进制”这个词,这个词的意思就和逢10进1位的十进制类似,它是逢2进1位,所以二进制里面的0就是0,1就是1。2的时候就需要进位了,是10;同理3是11,4是100,以此类推。
1.2
二进制为什么在计算机世界里面广泛应用呢?这是因为计算机又叫电子计算机,它的底层原理是基于电路的两种状态,有电流和没有电流,分别可以对应二进制里面的1和0,所以用二进制可以很好的跟电路的物理状态结合起来。
1.3
那为什么十进制在人类社会中更加广泛使用呢?
科学家们普遍相信,这跟人类有十根手指有很大的关系,因为早期人类可能习惯用手指计数,所以十进制就这样慢慢的普及和传播开来了。
1.3
比特是一个计算机术语,英文是bit
,中文是比特或者位,是一个二进制的信息单位,比如二进制中的10
(十进制2)就有两个bit,或者两位;同理,二进制中的100
(十进制4)就有三个bit,或者三位。
数字货币的始祖比特币的名字来源也是这么来的。
1.4
字节也是一个计算机术语,每八个比特组成了一个字节,它的英文是byte
,因此它也是一种二进制的信息单位,事实上我们日常经常接触到字节,比如手机内存1GB,这里的B就是byte的缩写。1GB是多少个字节呢,1KB是1024个字节,1MB是1024个KB,1GB是1024个MB,所以1GB是1024*1024*1024个Byte😁
1KB是1024个字节,
1MB是1024个KB,
1GB是1024个MB,
所以1GB是1024*1024*1024个Byte😁
还有一家很有名的公司叫字节跳动(抖音的母公司),据说这是因为字节跳动的创始人张一鸣认为,“物理世界的所有信息都可以在网络变成跳动的字节”,因此有了这个属于理工男的浪漫名字。
介绍了这么多关于比特(bit)和字节(byte)的背景知识,是因为他们和C语言中的数据类型精度密不可分的关系。
1.5
a.这张图里面是不同类型的char和int的范围。
b.这张图里面是不同类型的float的范围。
一个字节有8个bit,如果默认是正数的话,它就可以表示256个数,2的8次方,所以它的精度范围就是0~255,以此类推。
1.6
在实际应用中我们不需要这么精准的去计算,大致原则是,如果精度范围不够,我们就使用加强版类型,
比如有的int
只有2个字节(16位系统),只能表示-32768到+32767,我们需要使用更大精度的数据的时候,使用long int
(4个字节),这时候范围就是-2147483648~+2147483647;
如果还有比2100万更大的数字,我们就使用long long int
(8个字节),表示的范围是-9223372036854775808~+9223372036854775807。
1.7
这是针对早期计算机,实际上现在的计算机早已发展到64位了,我们在编程中的int类型也早就发展到4个字节,而long int更是发展到了8个字节,大部分数据运算都在这个范围内了。
浮点数float也类似,它只有四个字节,因此只能表示7位有效数字(6位小数),如果我们需要位数更多的小数,我们就可以直接使用double
,它有8个字节。
关于精度范围你需要记住两个点,第一个是每种类型有自己的精度范围,超出了这个精度范围程序会报错;第二个是,如果有可能进行大数字的运算,我们需要使用long int
和double
浮点数。
1.8
我们有个办法来查看运行代码的电脑上的数据类型长度,使用sizeof()
printf("%d\n",sizeof(int));
printf("%d\n",sizeof(float));
printf("%d\n",sizeof(char));
printf("%d\n",sizeof(long int));
printf("%d\n",sizeof(double));
1.一个int的长度,4字节
2.一个float的长度,4字节
3.一个char的长度,1字节
4.一个long int的长度,8字节
5.一个double的长度,8字节
2.运算
2.1 关于运算我们一共学习了三种,算术运算,比较运算,逻辑运算。
我们首先学习了算术运算,包括加减乘除的四则运算,以及取余,自增,自减主要特点是乘号和除号和数学中不一样。
1+3;
7-3;
5*7;
15.0/3.0;
10%3;
i++;
i--;
2.2
a.接下来是6种比较运算。
b.和三种逻辑运算。
c.比较运算和逻辑运算都会得到一个布尔型(bool)
布尔型只有两个值:
true(真)——C语言中等价为1;
false(假)——C语言中等价为0。
最后是关于这些运算的优先级,我们只需要记住三点:
1,默认从左到右;2,高优先级的先算;3,建议多加括号以便让代码更清晰。
2.3
表达式是一个C语言教科书中会教到的概念,一个表达式由两部分构成:
1、数据(变量/常量);2、运算符。
number_a=mumber_a+10;
number_a=4.0-1.0;
bool_b=true&&false;
bool_c=true||false;
运算符包括了我们上面学到的所有算术运算,比较运算,逻辑运算,赋值等等的符号。表达式和运算符是一个概念性的专业术语,实际编程中用到的比较少,但是教科书上面会讲, 因此我们也简单介绍一下,让我们看到的时候也不会觉得陌生😁。
3..易错点
二进制转十进制的计算过程。
二进制转十进制的计算过程。
4.思维导图
在撰写这篇文章时,我参考了《白纸编程》这个app的观点和思想,我要感谢他们对我的启发和帮助。