初学C语言,首先要接触的就是数据类型了,这也是学习任何一门语言所必须经历的阶段。很多同学在学习的时候不理解数据类型,因为对计算机及原理知之甚少。所以,在学习数据类型之前,如果你要是知道计算机的工作原理,那么会对这里的学习、理解有非常大的帮助。
开关的原理:继电器
计算机原理简述
简单来说,计算机内部全部都是由一个个很小的“开关”组成的。这些开关太多太多了,组成了一个个逻辑电路,然后就能进行运算。而计算机是用0和1表示数字的,一个开关就能代表0或者1,那么很多个开关就能有很多种状态,能表示很多数字。比如111表示十进制的7,至于它为什么代表7,你现在可以不用知道。你只需要知道计算机内部全部都是0和1就可以了。
继电器组成的“或”门电路
数据类型
现实世界中,常用的只有两种数,一种是小数,一种是整数。计算机中是只认识0和1的,为了让编程更简单,C语言规定了计算机用几个连续的开关来表示一个小数或者整数。“开关”,在C语言中叫做“位”。一个开关有两种状态,0和1,一个开关就表示一“位”。
接下来我们来看一下数据类型和“位”的关系。就拿能满足大多数编程需求的int类型和float类型来说。
int类型表示整数类型。一般的,一个int类型占用32位,就是32个开关,具体占用多少和计算机有关。这里就当做是32位吧,这32个开关在内存中是连续的。就是说,你定义了一个int类型的变量,就在内存中找一块连续的32个开关,每个开关表示0和1两种状态,那么它总共可以表示2的32次方个状态,也就是4294967296种状态,那么每一种状态就可以表示一个数字。所以呢,计算机内部就是这样来表示一个整数的。读取的时候,就把这些开关的状态读取出来就行了,它就能表示一个数字。
至于哪种状态表示什么数字,这些你并不需要关心,C语言已经帮你把底层的这些东西封装好,你只需要在程序中用就行了。比如你要定义一个值为10的变量a,那么你需要这样写:int a = 10;这样就行了,底层实现完全不用你操心。
至于float类型,其实和int类型没什么差别,还是很多连续的开关存储,不过C语言规定了哪些开关表示小数的整数部分,哪些开关表示小数部分。其它的数据类型,像char、double等底层实现原理都是类似的,明白了这些,相信你一定对C数据类型有了更深刻的理解。
本文系小博客网站原创,转载请注明文章链接地址