C笔记(18)-数据在内存中的存储

目录

一、整数在内存中的存储

二、大小端字节序和字节序判断

1. 什么是大小端

1.1 大端模式

1.2 小端模式

2. 模拟实现

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

1. 浮点数存储

1.1 格式

1.2 浮点数存的过程

1.3 浮点数读取过程

1.3.1 E不全为0或不全为1

1.3.2 E全为0

1.3.3 E全为1


一、整数在内存中的存储

整数的二进制表示方法有 原码、反码、补码 三种类型。
正数 原、反、补码 三种都相同。
在计算机系统中,数据一律用 补码 来表示和存储。
原因:使用补码,可以将符号位和数值域统一处理;
           加减法可以统一处理(CPU只有加法器),补码原码相互转换,运算过程相同,无需额外硬件             电路。

二、大小端字节序和字节序判断

1. 什么是大小端

对vs,地址从低到高;数据从高到低(从左 -> 右)

1.1 大端模式

数据低位字节内容保存在内存高地址处,数据高位字节内容保存在内存低地址处(vs看,正序)

1.2 小端模式

数据低位字节内容保存在内存低地址处,数据高位字节内容保存在内存高地址处(vs看,倒序)

2. 模拟实现

#include<stdio.h>

//写一个函数判断当前机器是大端还是小端,如果是小端返回1,如果是大端返回0

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

int main()
{
	if (check_sys() == 1)
		printf("小端\n");
	else
		printf("大端\n");

	return 0;
}

//&i -- 得到的是i的四个字节中,地址较小的那个字节的地址
//确定较小字节处内容即可知道存储模式

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

1. 浮点数存储

1.1 格式

1.2 浮点数存的过程

对于32位浮点数,最高1位存储符号位S,接着8位存储指数E,剩下23位存储有效数字M
对于64位浮点数,最高1位存储符号位S,接着11位存储指数E,剩下52位存储有效数字M

有1<M<2,M为1.xxxxx的数。规定:计算机保存M时,舍去第一位1.只保留.xxxxx部分,等到读取时,再把第一位的1加上去。目的在于节省一位有效数字。

对E来说:E为无符号整数,但科学记数法中E可以出现负数,所以存入内存时,E的真实值需加上一个中间数(对8位E,中间数为127;11位为1023)

1.3 浮点数读取过程

指数E从内存中取出分为三种情况:

1.3.1 E不全为0或不全为1

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

1.3.2 E全为0

指数E等于1-127(或者1-1023)即为真实值,有效数字M不再加上第一位的1

1.3.3 E全为1

此时,如果有效数字M全为0,表示无穷大(正负取决于符号位S)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值