内存中数据的存储(更新了十六进制数大小端存储)

您所在的位置:网站首页 c语言内存地址排列顺序 内存中数据的存储(更新了十六进制数大小端存储)

内存中数据的存储(更新了十六进制数大小端存储)

2023-12-22 23:44| 来源: 网络整理| 查看: 265

内存中数据的存储(更新了十六进制数大小端存储)

文章目录 内存中数据的存储(更新了十六进制数大小端存储)一、整型在数据中的存储二、浮点型在数据中的存储

一、整型在数据中的存储

在计算机中整型的表示有三种:原码、反码、补码

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

原码

将原来整型换算成二进制数

PS : 二进制数如何换算

例子:整数125

笔算:1111101

在这里插入图片描述

或者用计算机里面自带的计算器

在这里插入图片描述

反码

将原码的符号位不变,其他位依次按位取反就可以得到了

反码+1就得到补码

PS:正数的原、反、补码都相同,整型数据存放内存中其实存放的补码

在计算机系统中,数值一律用补码来表示和存储

原因在于,使用补码,可以将符号和数值统一处理,加法和减法也可以统一处理(CPU只有加法器)

补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。

十六进制和整型数据的存储

计算机中,二进制数可以转为十六进制数,一个十六进制数相当于4个2进制,也就是4个bit,两个十六进制数为一个字节

大端:数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中

小端:数据的低位保存在内存的低地址中,而数据的高位,,保存在内存的高地址中

例子:

int a = 0x123; //在内存中,int类型有4个字节,2个二进制数为一个字节 //所以有8个十六进制进制数 //补齐0是 0x 00 00 01 23 // 数据高位-------------数据地位 // 内存中: // 大端 00 00 01 23 // 小端 23 01 00 00 // 低地址-----------------高地址 二、浮点型在数据中的存储

根据国际标准IEEE(电气和电子工程协会)

任意一个二进制浮点数V可以表示成下面的形式:

(-1)^S * M * 2^E (-1)^s 表示符号位

当s=0,V为正数

当s=1,V为负数

M表示有效数字,大于等于1,小于2

2^E表示指数位

十进制数 5.5 如何转化为二进制数字

先看整数部分:5即为101 ( 1*2^2 + 0*2^1 + 1*2^0 = 5 )

而小数部分:0.5即为.1 (1*2^-1 = 0.5)

其他小数以此类推

如何将此小数用IEEE标准表示

先将5.5的二进制数变成科学计数法

101.1 = 1.011 * 2 ^ 2 (因为移动了 两位数,类比十进制的10 ^ 2)

s = 1;M = 1.011;E = 2(移动了2位);

但一些特殊的数字

比如 3.3

11.?? 再去用2的负1负2这种去表示表示不完,结果会四舍五入保存

所以浮点型的数字只需要保存SME就可以

针对float类型而言(4btye)

在这里插入图片描述

S是直接放进去,而EM值则为与EM相关的数值存进去

针对double类型(8btye)

对于64位的浮点数,最高的1位是符号位S,接着的11位是指数E,剩下的52位为有效数字M。

在这里插入图片描述

但IEEE 754 指出

关于M

M永远 1≤M



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3