前言
断更了很长时间了,其中有许多原因,我就不细说了。早先我已经逐渐发现了花大量时间写博客对我个人产生的一些反面效果,于是从我最初的理念上出发,我决定采用更为自由的创作节奏,之前的文章,我好像有些过于追求流量了,内容虽是用心创作,但是分散我的精力太多。我暂时还没有那么强的自制力,于是只能出此下策。
这篇博客,就算是新一页的开始吧。
数据存储的基本类型
还记得刚接触c语言时,就了解过许多数据类型,有些用的比较多,有些比较少,但其实存储原理是相通的。
总体上,分为整型、浮点型、结构型、指针型、空类型。
对这些类型的定义我不再加以赘述,但是其中有几个点很值得探讨,也很基本。我展开说一说:
数字的存储
一般计算机在内存中存储数据时,并不是直接将变量对应十进制数字存进去,而是将其转为二进制,这是由于计算机的cpu中一切数字的运算都是以二进制为基础。
而其中,对于二进制的保存、使用等,又引入了一套原码、反码和补码的概念。这是一套严谨而又合理的算法,最适合计算机使用。
除此之外关于存储最重要的一个概念,那必是地址(指针)了。地址起着定位、链接的作用,是计算机复杂精密的存储器中的关键。
这里同样不做展开,或许后续我会单独阐述我对指针的深度理解。
有/无符号(signed/unsigned)
这个可以限定用于大多数上述类型前,起初我只简单认为是正负数的区别,也很少用到,少有的一次是在编写生成随机数时,需要用到一个srand函数,而其中需要传入一个时间戳,而这个时间戳可以用无符号来限定类型,即srand((unsigned int)time(NULL))。恰巧其中还用到了空指针这个概念,嘿嘿。
事实上,有无符号对于数据存储来说最大的影响应该体现在两个方面:
预分配空间大小
也就是说,提前确定有无符号,便可以清晰地让系统提前规划出所需空间大小,提高运行效率。
变角度处理
对于有无符号,系统可以给出不同的处理方案,让指令执行起来更准确。
整型//提升
即当指定要打印的数据类型与变量的类型不一致时,系统会自动将数据进行类型的转换。我这里的整型提升只是一个代名词。
数据存储与地址
引入一个大/小端字节序的概念。
不同的计算机可能会有不同的字节序,这两种不同的存储的方式对数据的调用会产生一定影响,下面我作简单阐述:
大端字节序,即将高字节的数据存放于低地址,将低字节的数据存放于高地址;小端即相反。
直观一点来举例子的话,就是按照4321存进去,再按照1234倒着取出来,类似这样的意思。
讲到这吧,太细的东西不说了,再说就说不完了,没想到随便写了写又是一千字了.......