广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言数据存储归类介绍
  • 193
分享到

C语言数据存储归类介绍

C语言 数据存储C语言 数据存储类型 2022-11-13 13:11:20 193人浏览 安东尼
摘要

目录数据类型的介绍类型的基本归类整型在内存中的存储什么是大小端浮点数在内存中的存储浮点数在内存中的存储规则数据类型的介绍 在前面的章节中我们基本认识到了各种数据类型,这里我们就稍微回

数据类型的介绍

在前面的章节中我们基本认识到了各种数据类型,这里我们就稍微回忆以下吧

类型的意义:

  • 决定了访问内存空间的大小
  • 决定了看待内存空间的视角(例如:整型和字符数据类型)

类型的基本归类

整型家族:

char
    unsigned char
    signed char
short
    unsigned short [int]
    signed short [int]
int
    unsigned int
    signed int
long
    unsigned long [int]
    signed long [int]

浮点型家族:

float
double

构造类型:

> 数组类型
> 结构体类型    struct
> 枚举类型    enum
> 联合类型    uNIOn

指针类型:

int *pi;
char *pc;
float *pf;
void *pv;(泛型指针)

空类型:

void 表示空类型 (无类型)

通常用于 函数的返回类型、函数的参数、指针类型

//作为函数的返回类型
void f1()//不接受任何返回值
{
    ;
}
//作为函数的参数
int f2(void)//参数为void时,传入参数会报错
{
    ;
}
//作为指针类型
void* f3(void* pv)//参数为 void* 时,可接收任意类型的参数
{
    ;
}

整型在内存中的存储

计算机中的整数有三种2进制表示方法,即源码、反码、补码。

三种表示方法均有符号位和数值位

符号位: " 0 " 表示 正," 1 "表示 负

数值位:

正数:

原码、反码、补码相同

负数:

原码:直接将数值按二进制翻译

反码:原码符号位不变,其它位按位取反

补码:反码+1

我们可以在内存中的存储看到:

这里大家可能有个疑问,为什么ji在内存中会是这样?为什么ij内部二进制会倒过来存储呢??编译器坏了??(bushi

如果对此事好奇,就接着往下看吧。

什么是大小端

大小端存储是计算机的一种存储方式,其主存储的方式也由计算机决定。

什么是大小端存储:

大端(存储)模式:指的是,数据的低 (二进制)位保存在高地址中,高位保存在低地址中;

小端(存储)模式:指的是,数据的低位保存在低地址中,高位保存在高地址中;

注意:

大小端存储只跟单个类型数据的存储方式有关,数组的存储依然是由低地址向高地址进行存储

浮点数在内存中的存储

在认识浮点数在内存中的存储之前,我们先看一下下面的例子:

int main()
{
    int n = 9;
    float* pf = (float*)&n;
    printf("n的值为:%d\n", n);
    printf("pf的值为:%f\n", *pf);
    *pf = 9.0;
    printf("n的值为:%d\n", n);
    printf("pf的值为:%f\n", *pf);
    return 0;
}

为什么输出结果会是这样?

想要了解其中的原因我们首先要知道浮点数在内存中的存储规则

浮点数在内存中的存储规则

浮点数存储根据国际标准 IEEE (电气工程师学会) 754 来进行存储,具体规则如下:

  • (-1)^S * M * 2^E
  • (-1)^S 代表 符号位,S=0为正数,S=1为负数
  • M 表示有效数字,(1 ≤ M < 2)
  • 2^E表示指数位

IEEE 754规定:

对于 float 类型来说:

对于 double 类型来说:

IEEE 754对 有效数字M 和 指数E 有一些特殊的规定:

有效数字M

前面说过,1 ≤ M < 2,也就是说,M可以写成 1.xxxxxx 的形式,将 小数点前省略,则其中xxxxxx 就是我们所要保存的数字

指数E

对于 float 类型(E 占 8 位):E + 127 (取 0~255 中间数)

对于 double 类型(E 占 11 位):E + 1023 (取 0~2047 中间数)

举个例子(o゚v゚)ノ

十进制的 5.0 想要存进去

小数点前 需要转换成 二进制 101 . 0

根据科学计数法将其转换,1.01 x 2^(2)

指数E 进行替换 E = 2+127 = 129 = 1000 0001(二进制)

由上可得出 S = 0 E = 1000 0001 M = 1.01

0  10000001 01000000000000000000000
S     E           M

整理一下:
0100 0000 1010 0000 0000 0000 0000 0000
用十六进制表示:
4    0     a    0    0    0    0    0
整理一下:(大端存储)
40 a0 00 00
小端存储:
00 00 a0 40

趁着手还热乎,赶紧再来看看吧(/≧▽≦)/

十进制 -2.25 在内存中如何存储?

  • 符号为负 S = 1
  • 小数点前正着写二进制,小数点后按照2^(-n) ,n = 4 (1/4=0.25),(倒着写二进制),所以二进制为 10.01
  • 用科学计数表示 1.001 x 2^(1)
  • 指数E进行替换 E = 1 + 127 = 128 = 1000 0000(二进制)
  • 由上可得 S = 1 E = 1000 0000 M = 1.001

1 10000000 00100000000000000000000
S    E             M

整理一下:
1100 0000 0001 0000 0000 0000 0000 0000
用十六进制表示:
c     0    1    0    0    0    0     0
整理一下:
c0 10 00 00
小端存储:
00 00 10 c0

注意:(特殊情况)

当指数E为边界值时 0~255(0~1023)直接等于具体的真实值

E全为0:

直接等于0

E全为1:

直接等于具体值340282346638528859811704183484516925440.000000(2^255)

到此这篇关于C语言数据存储归类介绍的文章就介绍到这了,更多相关C语言数据存储内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C语言数据存储归类介绍

本文链接: https://www.lsjlt.com/news/171331.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C语言数据存储归类介绍
    目录数据类型的介绍类型的基本归类整型在内存中的存储什么是大小端浮点数在内存中的存储浮点数在内存中的存储规则数据类型的介绍 在前面的章节中我们基本认识到了各种数据类型,这里我们就稍微回...
    99+
    2022-11-13
    C语言 数据存储 C语言 数据存储类型
  • C++编程语言中stringstream类介绍
    stringstream是C++标准库中的一个类,用于处理字符串的输入输出。它是基于内存缓冲区的输入输出流,可以将字符串转换为各种类...
    99+
    2023-09-09
    C++
  • Go语言数据类型详细介绍
    目录一、Go 语言两大数据类型二、基础类型三、复合类型指针四、数组(array)五、切片(slice)六、字典/映射(map)七、通道(channel)八、结构体(struct)九、...
    99+
    2022-11-13
  • C语言数据存储详解
    目录一、数据类型二、整型在内存中的存储1.原码、反码、补码大小端介绍三、浮点型在内存中的存储1.举一个浮点数存储的例子: 2.浮点数存储规则: 总结一、数据类型 char:字符数字类...
    99+
    2022-11-12
  • C语言数组详细介绍
    目录什么是数组一维数组二维数组数组越界 数组名 结尾什么是数组 数组(Array)是一种用来存储同一种类型的集合,是一种有序的线性结构表。并且数组元素的地址是连续...
    99+
    2022-11-12
  • C语言深入探索数据类型的存储
    目录数据类型介绍类型的基本归纳整型家族浮点数家族构造类型指针类型空类型整型在内存中的存储原码,反码,补码大小端浮点数在内存中的存储浮点数存储的规则数据类型介绍 首先,对于我们C语言中...
    99+
    2022-11-13
  • go语言的10种数据类型介绍
    今天小编给大家分享的是go语言的10种数据类型介绍,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。go语言的数据类型有:1、布尔型,值只可以是常量true或false;2、数字类型,支...
    99+
    2023-07-04
  • C语言动态内存管理介绍
    目录前言:C 语言为内存的分配和管理提供了几个函数:1.malloc() 用法2.calloc() 用法3.realloc() 与 free() 用法前言: 简单记录一下,内存管理...
    99+
    2022-11-12
  • C语言数据的存储详解
    目录数据类型的介绍整形浮点型构造类型指针类型void空类型整数在内存中的存储原反补的介绍大小端的介绍面试例题练习浮点数在内存中的存储存储规则讲解举例IEEE754的特别规定案例flo...
    99+
    2022-11-12
  • C语言数据在内存中的存储
    这篇文章主要介绍了C语言数据在内存中的存储,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。数据类型详细介绍在前面C语言基础概览中,已经提到过了基本的C语言内置类型,但C语言的数...
    99+
    2023-06-15
  • C语言之快速排序算法(递归Hoare版)介绍
    废话不多说,先看代码 #define _CRT_SECURE_NO_WARNINGS 1 //快速排序算法,递归求解 #include <stdio.h> void ...
    99+
    2022-11-12
  • C语言中数据的存储详解
    目录1.内置类型(1)整型数组(2)浮点型2.自定义类型3.指针类型4.空类型(void)字符型浮点型(一)(二)总结 数据的存储首先就要说到数据的类型,类型决定了看待内存空间的视角...
    99+
    2022-11-12
  • 详解C语言中数据的存储
    目录一、类型归类1、整形家族2、浮点型家族3、指针类型4、空类型二、类型的意义 三、数据在类型中存储(以整形和浮点型为例子)1. 关于 存储的基本概念2.存储模式四.应用1.2.对...
    99+
    2022-11-12
  • 数据结构C语言链表的实现介绍
    目录前言函数1. 链表初始化2. 计算链表长度3. 打印链表4.计算链表长度5. 删除链表中指定位置节点6. 向链表中指定位置插入节点7. 全代码+运行效果前言 需要用到的函数库 ...
    99+
    2022-11-12
  • C++抽象数据类型介绍
    公众号:Coder梁(ID:Coder_LT) 我们在学数据结构的时候,经常遇到的一个概念就是抽象数据类型(Abstract Data Type),简称ADT。 维基百科中的定义是:...
    99+
    2022-11-12
  • C语言中数据在内存如何存储
    目录数据类型类型的基本归类整形有符号数和无符号数是否char 等于signed char呢?浮点型构造类型(自定义类型)指针类型空类型整形在内存中的存储原码,反码,补码正整数负整数大...
    99+
    2022-11-12
  • 关于C语言动态内存管理介绍
    目录1.为什么需要动态内存分配2.有关动态内存函数介绍2.1 malloc和free2.2 calloc函数2.3 realloc函数3. 常见的动态内存错误3.1 对NULL指针进...
    99+
    2022-11-13
  • C语言中字符型数据和浮点型数据介绍
    目录字符型1.来练练,输出一个字符A2.将小写字母转为大写字母浮点型先来看看float代码以下是双精度的浮点型double练习题新的一天又开始了哈,又是好好学习的一天啦。话不多说,直...
    99+
    2022-11-12
  • c语言的存储类别有哪些
    C语言的存储类别有以下几种:1. 自动存储类(auto):默认的存储类别,用于自动变量。自动变量在函数内部定义,函数结束时会被销毁。...
    99+
    2023-08-15
    c语言
  • 如何分析C语言数据的存储
    如何分析C语言数据的存储,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。数据类型的介绍数据类型存在的意义为变量开辟的空间大小(大小决定了使用范围)取数据的时候按照...
    99+
    2023-06-22
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作