关于C语言中整数和浮点数在内存中存储

1、大小端字节序

超过⼀个字节的数据在内存中存储的时候,就有存储顺序的问题,按照不同的存储顺序,我们分为大端字节序存储和小端字节序存储。

大端存储:将一个数据的低位字节内容存放在内存的高地址处,将高位字节的内容存放在低地址处。
在这里插入图片描述

小端存储:将一个数据的低位字节内容存放在低地址处,高位字节的内容存放在高地址处。
在这里插入图片描述

2、整数在内存中的存储

整数在计算机内存中以二进制形式存储,具体存储方式取决于整数的类型和范围。常见的整数类型包括有符号整数(signed int)和无符号整数(unsigned int)。

整数有原反补三种二进制表示形式,但内存中存放的时补码。
计算使用的时内存中的二进制,计算使用的就是补码。

(1)有符号整数

有符号的整数,三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,⽤1表示“负”,最⾼位的⼀位是被当做符号位,剩余的都是数值位。

正整数的原、反、补码都相同。
负整数的三种表⽰⽅法各不相同。

原码:直接将数值按照正负数的形式翻译成⼆进制得到的就是原码。
反码:将原码的符号位不变,其他位依次按位取反就可以得到反码。
补码:反码+1就得到补码。
(2)无符号整数

无符号的原反补同正整数。

3、浮点数在内存中的存储

浮点数用于表示具有小数部分的数,它们在内存中的存储遵循IEEE 754标准。IEEE 754标准定义了多种浮点数的格式,最常见的是单精度(32位)和双精度(64位)浮点数。
在这里插入图片描述

1.浮点数存储可视图

(1)32位浮点数

最高的一位储存符号位S ,接着八位储存指数E ,剩下的二十三位储存有效数字M
在这里插入图片描述

(2)64位浮点数

最高的一位储存符号位S ,接着十一位储存指数E ,剩下的五十二位储存有效数字M
在这里插入图片描述

2.浮点数储存过程

IEEE 754 规定,在计算机内部保存M时,默认这个数的第⼀位总是1,因此可以被舍去,只保存小数点后⾯的部分。

指数E为一个无符号整数(unsigned int),如果E为8位,它的取值范围为0-255;如果E为11位,它的取值范围为0-2047。存⼊内存时E的真实值必须再加上⼀个中间数,对于8位的E,这个中间数是127;对于11位的E,这个中间数是1023。

3.浮点数取出的过程

指数E从内存中取出还可以再分成三种情况:

(1)E不全为0或不全为1

这是常规情况。
浮点数就采⽤下⾯的规则表⽰,即指数E的计算值减去127(或1023),得到真实值,再将有效
数字M前加上第⼀位的1。

0 01111110 00000000000000000000000
(2)E全为0

这是特殊情况之一。
浮点数的指数E等于1-127(或者1-1023)即为真实值,有效数字M不再加上第⼀位的1,⽽是还
原为0.xxxxxx的⼩数。这样做是为了表⽰±0,以及接近于0的很⼩的数字。

0 00000000 00100000000000000000000
(3)E全为1

这是特殊情况之二。
如果有效数字M全为0,表⽰±⽆穷⼤(正负取决于符号位s)。

0 11111111 00010000000000000000000
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值