| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> 超详细的c进阶教程(一)!C语言数据存储剖析 -> 正文阅读 |
|
[C++知识库]超详细的c进阶教程(一)!C语言数据存储剖析 |
数据存储深度剖析冲鸭冲鸭!今天为大家详细介绍一下数据类型在内存中的处理和存储方式 数据类型简介更详细的介绍可以参考我的另外一篇文章c语言数据类型入门系列
以及还有无符号的整型:unsigned int,unsigned long 等
那么类型的意义可以在计算机那些方面体现出来呢? 数据类型在内存层面的意义小科普 1字节(byte)对应计算机中为8个bit位(表示为0000 0000),换算为16进制1字节为两位
不同的数据类型占用不同大小 我们来举一个栗子
我们使用的是VS2019进行调试,按F10可以进行调试,在调试过程中可以查看内存情况
调试到程序的末尾,可以观察到a的改变情况 为什么这里a只改变了4个字节呢? 数据类型的意义就体现出来了 介绍完数据类型,那么计算机的数据储存和计算怎么在电脑里面进行呢? 整型数据在计算机中存储和处理拿int类型举例,int类型有4个字节,就拥有4*8=32个比特位,其中最高位用于存放正负情况,0为正,1为负0.其它位存放将int类型转化为2进制的信息
例如-1的原码可以表示为1 000 0000 0000 0000 0000 0000 0000 0001 -1为为负数,所以将符号位设为1 原码,反码和补码为什么会出现这三种编码方式?
所以我们为了能将正数负数统一进行运算,引入了这三种编码方式 就要用到原码反码补码了~
例如:
这样运算就不会出现问题了
大端和小端存储方式什么是大端小端?
我们先拿个简单的数字举个栗子吧
所以我们翻译上面的10000的时候,需要反起来翻译哦! 为什么会有大小端之分呢? 我们在处理数据的时候,一般都是相同数据之间进行处理,但是也有意外情况,如果我们希望处理两个类型不同的数据,又该怎么样处理呢? 整型提升和算术转换整型提升在计算机中计算数据的话,整型运算要在CPU相应运算器件内运行。 因此,针对char和short等不足4字节的整型数据进行计算,需要将它们先转化为4字节大小的普通整型进行计算 计算完毕后,保存仍会保存原来数据类型大小的数据 这里举一个栗子:
输出结果是 在实际进行计算是以下这样的 运算完后因为c是char类型,所以又将不属于char的部分截断 所以我们的运算结果是-126 结论:整型提升方式为用原数据符号位补齐 整型提升在运算中发生
算术转换由下到上依次为
计算时,位于下面的类型会转化为上面的数据类型进行计算 关于无符号整型的一些性质
总之:将一个负数翻译成无符号整型,不需要将其翻译成原码,只需要将其对应二进制(包括符号位)翻译成对应10进制就行了 整数就差不多讲完了,接下来讲讲浮点数 浮点型数据在计算机中存储和处理浮点型也体现在它的存储方式和整型不一样 浮点型转换为二进制从小数点第n位开始,依次乘以2的-n次方 IEEE标准(754)任意一个二进制数可以表示为以下的形式
一个栗子:
浮点型数据的存储单精度和双精度型
位数不足的自动补0,但是指数好像又有点不对? 指数EE在标准中被定义为无符号整型,但是在实际运算中可能会出现0.0023这样的数字,它的指数位数小于0,所以标准对于E会进行修正
例如0.5,二进制表示为2-1,其指数存储需要存储为-1+127=126的二进制形式 总结与提示
巩固
本期内容到此结束啦!由于作者水平有限,文章中如有不足与疏漏之处在所难免,希望各位大佬提出你们宝贵的意见!笔芯~ |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年3日历 | -2025/3/4 11:34:20- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |