目录
  • (壹) 数据类型介绍
    • 1.1  类型的基本归类
  • (贰)整形在内存中的存储
    • 2.1  原码、反码、补码
    • 2.2  深入解析
    • 举例解析1:
    • 举例解析2

C语言修炼之路数据类型悟正法 解析存储定风魔上篇

(壹) 数据类型介绍

前面我们已经学习了基本的内置类型,以及他们所占存储空间的大小。:

C语言修炼之路数据类型悟正法 解析存储定风魔上篇

类型的意义: 

  • 使用这个类型开辟内存空间的大小(大小决定了使用范围)。
  • 如何看待内存空间的视角。

1.1  类型的基本归类

整形家族:

C语言修炼之路数据类型悟正法 解析存储定风魔上篇

浮点数家族:

C语言修炼之路数据类型悟正法 解析存储定风魔上篇

 构造类型:

C语言修炼之路数据类型悟正法 解析存储定风魔上篇

 指针类型

C语言修炼之路数据类型悟正法 解析存储定风魔上篇

空类型: 

C语言修炼之路数据类型悟正法 解析存储定风魔上篇

C语言修炼之路数据类型悟正法 解析存储定风魔上篇

(贰)整形在内存中的存储

我们之前讲过一个变量的创建是要在内存中开辟空间的。

空间的大小是根据不同的类型而决定的。

那接下来我们谈谈数据在所开辟内存中到底是如何存储的?

比如:

C语言修炼之路数据类型悟正法 解析存储定风魔上篇

我们知道为a分配四个字节的空间。 那如何存储? 

2.1  原码、反码、补码

计算机中的有符号数(整数)有三种表示方法,即原码、反码和补码。

三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位三种表示方法各不相同。

C语言修炼之路数据类型悟正法 解析存储定风魔上篇

C语言修炼之路数据类型悟正法 解析存储定风魔上篇

C语言修炼之路数据类型悟正法 解析存储定风魔上篇

C语言修炼之路数据类型悟正法 解析存储定风魔上篇

C语言修炼之路数据类型悟正法 解析存储定风魔上篇

C语言修炼之路数据类型悟正法 解析存储定风魔上篇

2.2  深入解析

正数的原、反、补码都相同。

对于整形来说:数据存放内存中其实存放的是补码。 

C语言修炼之路数据类型悟正法 解析存储定风魔上篇

为什么呢?

C语言修炼之路数据类型悟正法 解析存储定风魔上篇

举例解析1:

C语言修炼之路数据类型悟正法 解析存储定风魔上篇

C语言修炼之路数据类型悟正法 解析存储定风魔上篇

举例解析2

了解一下计算机的底层概念,我们人脑可以很轻松的知道机器数的第一位是符号位,但对于计算机基础电路设计来说判别第一位是符号位是非常难和复杂的事情,为了让计算机底层设计更加简单,人们开始探索将符号位参与运算,并且采用只保留加法的方法,我们知道减去一个数,等于加上这个数的负数,即:1-1 = 1 + (-1) = 0,这样让计算机运算就更加简单了,并且也让符号位参与到运算中去。

C语言修炼之路数据类型悟正法 解析存储定风魔上篇

C语言修炼之路数据类型悟正法 解析存储定风魔上篇

因为补码能多存储一个-128,而且在计算机底层中存储的是补码,所以在计算机中一个8位的二进制数的存储范围是用补码表示的[-128,127],而不是用原码或反码表示的[-127,127]。这也可以解释为什么计算机中一个字节的取值范围是[-128,127]。

这样也能够回答我们开始提出的问题了,原码、反码、补码的使用,是人们为了让符号位能参与运算并让计算机底层运算更加简单而设计出来的数据存储表示方式。

C语言修炼之路数据类型悟正法 解析存储定风魔上篇

C语言修炼之路数据类型悟正法 解析存储定风魔上篇

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。