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

 更新时间:2022年02月26日 16:57:40   作者:玄澈_  
使用编程语言进行编程时,需要用到各种变量来存储各种信息。变量保留的是它所存储的值的内存位置。这意味着,当您创建一个变量时,就会在内存中保留一些空间。您可能需要存储各种数据类型的信息,操作系统会根据变量的数据类型,来分配内存和决定在保留内存中存储什么

(壹) 数据类型介绍

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

类型的意义: 

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

1.1  类型的基本归类

整形家族:

浮点数家族:

 构造类型:

 指针类型

空类型: 

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

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

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

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

比如:

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

2.1  原码、反码、补码

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

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

2.2  深入解析

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

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

为什么呢?

举例解析1:

举例解析2

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

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

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

到此这篇关于C语言修炼之路数据类型悟正法 解析存储定风魔上篇的文章就介绍到这了,更多相关C语言 数据类型内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C++ 十进制转换为二进制的实例代码

    C++ 十进制转换为二进制的实例代码

    这篇文章介绍了C++ 十进制转换为二进制的实例代码,有需要的朋友可以参考一下
    2013-10-10
  • C++中使用vector存储并遍历数据的基本步骤

    C++中使用vector存储并遍历数据的基本步骤

    C++标准模板库(STL)提供了多种容器类型,包括顺序容器、关联容器、无序关联容器和容器适配器,每种容器都有其特定的用途和特性,这篇文章主要介绍了C++中使用vector存储并遍历数据的基本步骤,需要的朋友可以参考下
    2025-01-01
  • 用C语言实现扫雷小程序

    用C语言实现扫雷小程序

    这篇文章主要为大家详细介绍了用C语言实现扫雷小程序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • Linux编程实现制作文件的ed2k链

    Linux编程实现制作文件的ed2k链

    这篇文章主要介绍了Linux编程实现制作文件的ed2k链的相关资料,需要的朋友可以参考下
    2015-03-03
  • Trae+Qt+MSVC环境配置的实现示例

    Trae+Qt+MSVC环境配置的实现示例

    本文主要介绍了Trae+Qt+MSVC环境配置,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-03-03
  • STL各个容器性能详细比较

    STL各个容器性能详细比较

    从下面表中的数据来看写入用时vector和deque很快,因为他们内存分配次数少,关联容器和list都是一个一个分配的,一个一个分配也会造成内存碎片,内存利用率低
    2013-09-09
  • C语言中实现自定义数据类型的输入输出的方法和技巧

    C语言中实现自定义数据类型的输入输出的方法和技巧

    在 C 语言中,除了基本的数据类型(如整型、浮点型、字符型等),我们还经常需要自定义数据类型来满足特定的编程需求,所以本文给大家介绍了C语言中实现自定义数据类型的输入输出的方法和技巧,需要的朋友可以参考下
    2024-07-07
  • 基于malloc与free函数的实现代码及分析

    基于malloc与free函数的实现代码及分析

    本篇文章介绍了malloc与free函数的实现代码及分析。需要的朋友参考下
    2013-05-05
  • C++中set的用法学习

    C++中set的用法学习

    Set是C++ STL(标准模板库)的一个容器类,它用于存储不同的值,并且可以按照特定顺序进行访问和操作。本文就来通过一些示例和大家简单讲讲set的用法吧
    2023-05-05
  • 用typedef定义类型的总结分析

    用typedef定义类型的总结分析

    除了可以直接使用C提供的标准类型名(如:int ,char ,float,double,long等)和自己声明的结构体、共用体、枚举类型外,还可以使用typedef声明 新的类型名 来代替 已有的 类型名
    2013-08-08

最新评论