C语言 — 数据在内存中的存储(1)

前言

近期会更新整形和浮点型在内存中的存储方式,本文是对整形在内存中存储进行介绍。

如果有帮助,还请各位小伙伴多多点赞关注收藏,后期会持续进行更新!!!

本文内容

  1. 数据类型详细介绍
  2. 整形在内存中的存储:原码、反码、补码
  3. 大小端字节序介绍及判断
  4. 浮点型在内存中的存储解析

一、类型的基本归类

1.整形类型

整形类型分为有符号、无符号两类

有符号 signed( 或者不加,如 int 就是有符号整形 )
无符号 unsigned

char 类型

 char               //char = signed char
 signed char        //有符号字符类型    
 unsigned char      //无符号字符类型

short 类型

 short              //short = signed short
 signed short 		//有符号短整型类型
 unsigned short		//无符号短整形类型

int 类型

 int 				//int = signed int
 signed int  		//有符号整形类型
 unsigned int		//无符号整形类型

long 类型

 long				//long = signed long
 signed long		//有符号长整型类型
 unsigned long		//无符号长整形类型

2.浮点数类型

 float     			//单精度浮点型
 double				//双精度浮点型

3.指针类型

int*       			//整形指针类型
char*				//字符指针类型
float*				//浮点型指针类型
void*				//空指针类型

4.构造体类型

 arr[]             	//数组类型 
 struct				//结构体类型
 enum				//枚举类型
 union				//联合类型

5.空类型

 void				//void表示空类型  通常应用于函数的返回类型、函数的参数、指针类型

二、整形在内存中的存储方式

1.原码 反码 补码

计算机中的整数有三种2进制表示方法,即原码反码补码
三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位

正数的原、反、补码都相同
负整数的三种表示方法各不相同

在这里插入图片描述

原码

直接将数值按照正负数的形式翻译成二进制就可以得到原码。

反码

将原码的符号位不变,其他位依次按位取反就可以得到反码

补码

反码+1就得到补码

2.补码转为原码的两种方式

第一种

通过倒推的方式 补码-1 得到反码 反码除符号位按位取反 得到原码

在这里插入图片描述

第二种

补码 先进行除符号位按位取反 然后再进行+1 得到原码

在这里插入图片描述

3.大小端存储模式

字节序是指多字节数据在内存或网络传输过程中的存储顺序。由于计算机硬件和软件的不同,字节序也会有不同的表示方式,主要分为大端字节序和小端字节序。

大端字节序

大端(存储)模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中

小端字节序

小端(存储)模式,是指数据的低位保存在内存的低地址中,而数据的高位,保存在内存的高地址中

这里设计一个程序来识别当前机器的字节序

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
void  estimate(int x)
{
	if (x == 1)
	{
		printf("小端");
	}
	else
	{
		printf("大端");
	}
}

int main()
{
	int a=1;
	char* p = (char*)&a;
	estimate(*p);
	return 0;
}

三、完结

如这篇博客对大家有帮助的话,希望 三连 支持一下 !!! 如果有错误感谢大佬的斧正 如有 其他见解发到评论区,一起学习 一起进步。

  • 20
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Duck Bro

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值