IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: 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语言----探究数据类型在内存中的存储(整型与浮点型)

数据类型

整型:char short int long longlong
浮点型:float double …
构造类型:数组 结构体 枚举 联合体…
指针类型:char* int* …

整型在内存中的存储

我们都知道,数据在内存中以二进制的形式存储。
对于整数而言,二进制的表示方式有三种:原码,反码,补码(以补码形式存于内存)
正整数:原反补相同
负整数:直接写出是原码,原码符号位不变其他取反为反码,反码加1为补码
举个例子:
十进制:-15
二进制原码:1000000000000000000000000001111
反码: 11111111111111111111111111110000
补码: 1111 1111 1111 1111 1111 1111 1111 0001
补码十六进制:ff ff ff f1
验证:在这里插入图片描述

整数在内存中既然真的以补码形式存储,那为什么这样做呢?
我们通常用整数进行计算,而我们知道计算机的CPU负责这个任务,但是CPU上只有加法器,倘若我们想计算
-1+1
原码:10000000000000000000000000000001
+00000000000000000000000000000001
结果:10000000000000000000000000000010
结果本应该是0,可是这么看来加起来会变成-2,显然是算错了,可是计算机会出现这种错误吗?
我们在用补码进行一次运算
11111111111111111111111111111111
+ 00000000000000000000000000000001
=100000000000000000000000000000000(最前面的1溢出丢弃,结果为零)
这样看来就可以将符号位与数值位进行统一计算
除此以外原码到补码的转换是可逆的,可以逆回去运算也可以用相同的方法算回去。

大小端问题

通过上面的验证,我们不难发现整数在内存中存储数据是倒序的。也就是小端存储。
在这里插入图片描述

大端字节序:把数据的低位字节序的内容存放在高地址处,高位字节序的内容存放在低地址处
小端字节序:把数据的高位字节序的内容存放在高地址处,低位字节序的内容存放在低地址处

char类型变量在内存中的存储

char:00000000~11111111
signed char:-128~127(最高位为符号位)
unsigned char:0~255

浮点型在内存中的存储

存储

IEEE 754标准规定
浮点数的表示形式:(-1)sM2E
s:0 / 1
1<=M<2
E:指数
例如:5.5
十进制:5.5
二进制:101.1
科学表示:(-1)01.01122(s=0,M=1.011,E=2)

那内存中是如何存储这些数据呢?
在这里插入图片描述
s:存放0(正数)或者1(负数),表示符号位
M(1<=M<2):1.xxxxxxxx,因此不需要存储1,只需要存储小数点后的数字,提高精度
E:为无符号数,存放正数,但是E可以存放负数,只需要加上一个中间值
内存存放的E=原本的E+127(8bit)/+1023(11bit)

读取

s与M直接按照存储方式读出来
指数E从内存中取出分为三种情况:
1、E不为全0或者不为全1
E=内存中的E-127(8bit)/ -1023(11bit)
2、E为全0
E=1-127/1-1023,说明原来的E非常小,整个数接近于0,符号取决于s
3、E为全1
原来的E非常大,整个数趋近于无穷大,符号取决于s

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-03-22 20:20:07  更:2022-03-22 20:21:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 2:23:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码