整数和浮点数在内存中的存储

        由于计算机的限制,无论是整数还是浮点数,其在内存中的存储大多通过二进制进行。

一、整数的二进制存储

1、位的划分

        有符号整数的二进制序列中最高位为符号位,其余位为数值位,符号位用1表示负,0表示正。

2、正负整数的存储(原码、反码、补码)

        无论是正是负,内存存放的都为补码。

        正数原码、反码、补码都一致。

        负数转换为补码的规则

                原码:直接按照正负数转换为二进制所得到的就是原码;

                反码:原码符号位不变,数值位取反得到反码;

                补码:反码+1得到补码;

3、无符号整数

        无符号整数没有符号位,均为数值位。

二、浮点数的二进制存储

 1、位的划分

        根据国际标准IEEE754,任意一个二进制浮点数V可表示为以下形式:

                                        V=(-1)^S * M * 2^E

>>  (-1)^S表示符号位,S=0,V为正数;S=1,V为负数;

>>  M表示有效数字,且1<M<2;

>>  2^E表示指数位

        如5.0的二进制为101.0,相当于1.01*2^2,S=0,M=1.01,E=2;

-5.0二进制为-101.0,则S=1,M=1.01,E=2;(二进制小数点后n位表示2^-n,如0.001表示1/8)

        对于32位的浮点数(float),最高一位存储符号位,8位存储指数E,剩下的23位存储M;

对于64位的浮点数(double),最高一位存储符号位,11位存储指数E,剩下的53位存储M;

2、浮点数存储过程

        对于M来说,由于M必定大于1且小于2,故M的第一位必为1,在存储时为节约空间,只保留小数点后部分,如1.01只保留01,等到读取时自动补上1。

        对于E来说,其可以为负数,根据IEEE 754规定,存入内存的E的真实值需加上一个中间数,对于8位的E,中间值为127,对于11为的E,中间值为1023。如2^10的E为10,保存时则为10+12=137,即1000 1001。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值