整数和浮点数在内存中中的存储(介绍版)

1.整数在内存中的存储

我们知道计算机主要是以二进制存储数据的
在计算过程中通常将其的转化为二进制方便计算机读取;

2.整数在内存中的存储方式

1.整数的二进制表示方式有三种,即原码,反码和补码
2.以上的三种表示方式均有有符号位和数值位
符号位都用“0”来表示该数字为正数,用“1”来表示负数呢,而符号位和数值位的区别是数值位的最高为就是符号位,剩余的就是数值位
3.正整数的原码,反码和补码都相同;
4.负整数的三种表示形式个不相同
原码:直接将数值按照正服数的形式翻译成二进制得到就是 原码。
反码:将原码的符号位不变其他的位依次取反就可以的到反码。
补码:反码+1就得到补码。


这就是在计算机中整形为啥存放补码?

3.下面就会涉及到大小端

1.那么就会想知道啥大小端了

在存储的过程中,其实当存储超过一个字节的时候就会出现存储顺序的问题,按照不同的存储顺序我们将其分为大端字节序和小端字节序
1.大端(存储)模式:是指数据的低位字节存储在内存的高位地址处,而数据的高位字节内容,保存在内存的低地址中。
2.小端(存储)模式:是指数据的低位字节内容保存在内存的低地址处,而数据的高位字节内容,保存在内存的高地址处。

(1)为什么会有大小端呢?

这是主要和计算机的硬件有关的,一般情况下大多数都以小端模式为主的
在这里插入图片描述

(2)下面我们来实现一个关于大小端的检查呢😊

#include <stdio.h>
//形成一个检查函数的说
int check_sys()
{
	int i=1;
	return (*(char*)&i);//这里主要涉及一个强制转换的说返回地址的第一个字节
}
int main()
{
	int ret=check();
	if(ret==1)
	{
		printf("小端\n");
	}
	else
	{
		printf("大端\n");
	}
	return 0;
}

1.浮点数在内存中的存储

常见的浮点数:3.1415926,1E10等,浮点数家族包括:float、double、long double
在这里插入图片描述
在这里插入图片描述
这是float类型的存储方式呢!
在这里插入图片描述
这是double类型的存储方式呢!
double的大小是8个字节呢,所以有64bit
当其没有补齐的时候,就补零呢!

注意
1.在存储的过程中有很多需要注意的地方呢
前面说过的,M的取值范围为1<=M<2,也就是说M可以写成1.xxxxxxxxxx的形式呢,其中xxxxxxx表示小数的部分呢。在计算机内部保存的时候默认第一位为1,所以这个数字就可以被舍去。这样就有24位可以留给M了,这样就提高了计算的精确度。
2.对于E(首先E为一个无符号整数)(unsigned int)
所以E是有取值范围的,但是我们知道在科学技术发的过程中E可能出现负数的,所以我们在存入内存的过程中需要加上一个中间值的说,当E为8位是中间值为127;当E为11位时候,中间值为1023.
如图换算在这里插入图片描述
3.当E全为0的时候
这时浮点数的指数E为1-127(1-1023)即为真实值,所以其表示一个非常接近0的数字呢
4.当E全为1时则表示一个+无穷大或者-无穷大的数字
今天的博客就结束啦
喜欢博主的给博主点个赞赞哦,也可以动动小手给博主一个关注哦😍😘
请添加图片描述
白白啦!!!

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值