数据在内存中的存储

整数在内存中的存储

学习了操作符之后,我们知道整数2进制有三种表示方法:原码,反码,补码

有符号整数:三种表示方法均有符号位和整数位,符号位用0表示正,最高位为符号位

正整数原反补码均相同

负整数:数值按二进制翻译即为原码,原码符号位不变,其他按位取反就是反码,反码加一为补码

整形:数据存放在内存的是是补码(使用补码可以将符号位和数值域统一处理)

大小端字节序和字节序的判断

概念

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

大端字节序:高位存在低地址中

小端字节序:高位存在高地址中

常用的x86--->小段模式 KEIL C51大端模式

很多ARM DSP都为小端模式

判断

分析 

int a=1;  ox00000001

大端 (低地址)00000001(高地址)

小端 (高地址)01000000(低地址)

取a

地址,强转为char,比较第一个字节内容大小即可

int check_sys()
{
  int a=1;
  return (*(char*)&a);
}

浮点数在内存中的存储

常见的浮点数 3.14159,1E10

浮点数家族:float,doouble,long double

浮点数存储方式和 整数存储的方式不同,任意二进制浮点数v可以表示成下面的形式

v=(-1)^s*M*2^E

(-1)^s表示符号位  当s=0 v为正数,当s=1,v为负数

M表示有效数字 1<=M<2

2^E表示指数位

eg: 十进制9.5 二进制(-1)^0*1.0011*2^3  

规定

对于32位的浮点数,最高位存s,接着8位存E,剩下的23位存M

对于64位的浮点数,最高位存s,接着11位存E,剩下的52位存M

浮点数存的过程

规定:存入内存时E的真实值必须加上一个中间数,对于8位的E ,中间数是127,对于11位的E,中间数是1023

浮点数取的过程

1.E不全为0或1(常见的情况)

E减去127(1023)得到真实值,再将有效数字M前加上第一位的1

2.E全为0

E=-126 即为真实值

此时M不再加1 ,此时的数为无穷小

3.E全为1

表示无穷大

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值