C/C++数据类型从0到内存具体分配详解

news2025/10/30 22:57:39

一,数据类型分类

1.整形家族:char , short , int , long , long long , unsigned int , unsigned char , unsinged short ,  unsigned long , unsinged long long  。(为什么将char归入整形家族是因为字符在机器中是以Ascll码值储存的)

2.浮点型家族:float , double 。

3.自定义类型:struct ,enum ,union 。

4.void类型。

二,类型内存大小

char/unsigned char(一个字节)

short/unsigned short(两个字节)

int/unsigned int(四个字节)

long int/unsigned long int(大于等于四个字节,具体看机器)

long long/unsigned long long(大于等于八个字节)

float(四个字节)

duoble(八个字节)

三,内存中的具体储存方式(谈整形家族和浮点型家族,期待我下次文章讲自定义类型吧)

1.整形家族以 int 为例,首先我们要看判断机器大小端(某家公司笔试题,解题方法很多,这里只讲概念)

补充机器大小端:假设我们现在定义了一个 int a = 1;它内存大小是四个字节,内存是有地址编号的,以字节为单位,a 的二进制补码为(原反补码可看我以前的文章https://mp.csdn.net/mp_blog/creation/editor/130656985),00000000000000000000000000000001,但是地址是分高低地址的,如果补码中的1在低地址那么机器就是小端,反之则是大端。

 我们开始讲 int 内存空间中的使用,一个字节是八个比特位,所以 int 它有32个比特位,我们看图明白它的分配(以小端机器为例)

其他整形家族存储大同小异,只有内存大小不同。

 2.浮点型家族以 float 为例

首先我们要明确一个点,浮点型和整形在内存中的存储是完全不同的,接下来,我们以 float 为例讲解。首先理论知识 如何类型都可以转化位科学计数法,如 15  =  1.5*10^1 ,我们的 浮点型家族也是类似科学计数法的方式存储的,首先仍然是符号位,它的符号位与整形不同,它默认是(-1)^s,如果 s 是0则代表它是正数,如果是1则是负数(暂时只要记住,等下有图)。然后存储1.5这个部分,但是要转化为二进制,也就是转化为只有 0 和 1,在存储的时候它会自动省略 1 ,也就是只存小数部分,在拿出来的时候会自动加 1,然后就是存指数部分了,同样先转化为二进制,但是在存储的时候它会加上127再转化为二进制存储,如果有兴趣可以自己去找相关资料,这里不再过多解释,指数部分拿出来的时候分三个可能,1)第一个二进制存储之后全0,因为存储的时候加上了127,此时出现0,代表它是一个极小的数,把所有的数拿出来时系统会省略之前的1,直接是0.00000…… * 2^ -127 的形式,2)指数部分全为1,代表是一个极大的数,可以自己探索。3)既不全为 0 也不全为 1 ,那就是把进去是加的 127 减去 ,其他不变。具体细节如下图

四:以题验剑

 观看题目回答结果:

9

0.000000

1091765616

9.000000

原因是浮点数和整形的存储方式不一样,并且往外拿的方式不一样,如果不理解,按照我之前讲解的方法进行二进制转化存储和拿出,为了避免思想的惰性,不再讲解此题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/596585.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分类管理你的联系人,有效提升营销转化率!

电子邮件营销已成为外贸和跨境电商企业宣传产品和服务的必不可少的工具。在电子邮件营销中,电子邮件联系人列表的质量对活动的成功至关重要。提高联系人名单质量的途径之一就是对联系人进行分类管理。本文将讨论为邮件联系人为什么要分类管理? 1、提高活…

风险投资成功案例分析_著名的风投成功案例

风险投资成功案例分析1 转换科技公司(Transition Technology Inc.以下简称TTI)在1987年初开始寻求风险资本,直到212天后终于获得了3i风险投资公司(以下简称3i)等提供的300万美元风险资本。这是一个比较常规的风险投资过程,但其中的曲折历程也颇耐人…

Maven uber-jar(带依赖的打包插件) spring-boot-maven-plugin

文章目录 最基础的 spring-boot-maven-plugin 使用指定入口类安装部署原始 Jar 包到仓库保持原始Jar包名称,为 spring-boot-maven-plugin 生成的Jar包添加名称后缀打包时排除依赖建议将生成的Jar解压后了解一下整体结构与其他常用打包插件比较 本文是对 spring-boot…

04 【计算属性 侦听属性】

04 【计算属性 侦听属性】 1.计算属性 1.1插值语法实现 <title>姓名案例_插值语法实现</title><div id"root">姓&#xff1a;<input type"text" v-model"firstName"> <br/>名&#xff1a;<input type"…

Python自动人工智能训练数据增强工具 | DALI介绍(含代码)

Python自动人工智能训练数据增强工具 | DALI介绍(含代码) 文章目录 Python自动人工智能训练数据增强工具 | DALI介绍(含代码)自动数据增强方法DALI 和条件执行使用 DALI 自动增强使用 DALI 的自动增强性能尝试使用 DALI 进行自动增强 深度学习模型需要数百 GB 的数据才能很好地…

回归测试:优先级(Coverage 的适应度函数)

回归测试&#xff1a;优先级 介绍 在确定优先级时&#xff0c;我们的目标是为测试用例找到一个好的顺序。理想情况下&#xff0c;我们希望尽早发生任何故障。这可以加快整体开发过程&#xff0c;例如&#xff1a; 有时&#xff0c;一旦发现失败&#xff0c;我们就会停止测试。…

HashMap详细讲解-面试题大全

HashMap底层数据结构是什么&#xff1f;1.7和1.8有何不同 1.7是 数组 链表&#xff0c;1.8 是数组 &#xff08;链表 或者 红黑树&#xff09; 当链表的元素比较多的时候&#xff0c;链表就会转换成红黑树&#xff0c;红黑树的元素减少了&#xff0c;红黑树也会转换成链表 为…

前后分离的优势

1.可以实现真正的前后端解耦&#xff0c;前端服务器使用nginx。 前端/WEB服务器放的是css&#xff0c;js&#xff0c;图片等等一系列静态资源&#xff08;甚至你还可以css&#xff0c;js&#xff0c;图片等资源放到特定的文件服务器&#xff0c;例如阿里云的oss&#xff0c;并使…

【计算机网络】前后端分离,HTTP协议,网络分层结构,TCP,强缓存/协商缓存

❤️ Author&#xff1a; 老九 ☕️ 个人博客&#xff1a;老九的CSDN博客 &#x1f64f; 个人名言&#xff1a;不可控之事 乐观面对 &#x1f60d; 系列专栏&#xff1a; 文章目录 前后端分类HTTP协议HTTP组成HTTP的版本HTTP的请求方式HTTP请求头HTTP响应头强缓存和协商缓存 HT…

Linux ls -l输出文件信息详解

在linux中&#xff0c;我们知道一切皆为文件&#xff0c;经常我们会使用ls -l去查看文件的信息&#xff0c;今天会大家详细讲解一下ls -l输出的文件属性信息。 1.ls -l输出 命令&#xff1a; ls -l 通过ls -l命令输出&#xff0c;我们可以看到上图中的属性信息输出&#xff…

【珍藏版】生态系统NPP及碳源、碳汇模拟、土地利用变化、未来气候变化、空间动态模拟

由于全球变暖、大气中温室气体浓度逐年增加等问题的出现&#xff0c;“双碳”行动特别是碳中和已经在世界范围形成广泛影响。碳中和可以从碳排放&#xff08;碳源&#xff09;和碳固定&#xff08;碳汇&#xff09;这两个侧面来理解。陆地生态系统在全球碳循环过程中有着重要作…

五、JSP05 分页查询及文件上传

五、JSP 分页查询及文件上传 5.1 使用分页显示数据 通过网络搜索数据时最常用的操作&#xff0c;但当数据量很大时&#xff0c;页面就会变得冗长&#xff0c;用户必须拖动才能浏览更多的数据 分页是把数据库中需要展示的数据逐页分步展示给用户 以分页的形式显示数据&#xff…

Elasticsearch 8.X “图搜图”实战

1、什么是图搜图&#xff1f; "图搜图"指的是通过图像搜索的一种方法&#xff0c;用户可以通过上传一张图片&#xff0c;搜索引擎会返回类似或者相关的图片结果。这种搜索方式不需要用户输入文字&#xff0c;而是通过比较图片的视觉信息来找到相似或相关的图片。这项…

Tomcat服务器的安装即相关介绍

一、Tomcat的安装步骤 1、访问官网下载点击此处进入Tomcat官网&#xff1b; 2、在下图所示位置点击想要下载的版本下载&#xff0c;这边演示的是以Tomcat8为演示对象&#xff1b; 3、进入下载页面如下图所示&#xff0c;根据系统类型和版本选择合适的安装包&#xff1b; 4、下…

Wampsever升级增加php5.6的方法过程

1、下载wampserver2.5&#xff0c;文件包名&#xff1a;wampserver2.5-Apache-2.4.9-Mysql-5.6.17-php5.5.12-64b.exe https://sourceforge.net/projects/wampserver/files/WampServer%202/Wampserver%202.5/ 这个版本只有40M&#xff0c;包含&#xff1a; Apache-2.4.9&#x…

SpringCloud OpenFeign 学习

SpringCloud OpenFeign 文章目录 SpringCloud OpenFeign1 OpenFeign介绍2 OpenFeign-应用实例3 OpenFeign 测试 1 OpenFeign介绍 OpenFeign 是个声明式 WebService 客户端&#xff0c;使用 OpenFeign 让编写 Web Service 客户端 更简单 它的使用方法是定义一个服务接口然后在上…

【Java 抽象类抽象方法】什么是抽象类方法,如何定义,起什么作用?

博主&#xff1a;_LJaXi Or 東方幻想郷 专栏&#xff1a; Java | 从入门到入坟 Java 抽象类 & 抽象方法 抽象类的概念 &#x1f445;抽象方法的概念 &#x1f42c;抽象类和抽象方法结合使用 &#x1f984; Java中的抽象类和抽象方法是面向对象编程中的重要概念&#xff0c;…

【系统学习】Java基础4之lamda表达式和函数式接口

lamda表达式与函数式接口 lamda表达式 语法格式一&#xff1a;无参&#xff0c;无返回值 Lambda 需要一个参数&#xff0c;但是没有返回值 语法格式三&#xff1a;数据类型可以省略&#xff0c;因为可由编译器推断得出&#xff0c;称为“类型推断” 语法格式四&#xff1a;…

MySQL和Redis之间的存储区别

概述 MySQL是一种关系型数据库&#xff0c;而Redis是一种键值对存储数据库。虽然它们都是用来存储和管理数据的&#xff0c;但是它们在很多方面都有不同&#xff0c;但是它们在存储策略、日志存储方式、硬盘存储、数据恢复等方面都有一定的区别。 数据类型 MySQL支持多种数据…

电脑怎么通过网络传输文件?

可以通过网络在电脑之间传输文件吗&#xff1f; “由于天气的原因&#xff0c;我的老板决定让所有员工在家工作。但是我很多工作文件都在公司的电脑中&#xff0c;怎么才能将公司的文件远程传输到我家里的电脑上&#xff1f;电脑可以通过网络远程传输文件吗&#xff1f;” …