您现在的位置是:首页 >技术杂谈 >【C语言】数据在内存中的存储(1)网站首页技术杂谈
【C语言】数据在内存中的存储(1)
简介【C语言】数据在内存中的存储(1)
前言
近期会更新整形和浮点型在内存中的存储方式,本文是对整形在内存中存储进行介绍。
如果有帮助,还请各位小伙伴多多点赞关注收藏,后期会持续进行更新!!!
本文内容
- 数据类型详细介绍
- 整形在内存中的存储:原码、反码、补码
- 大小端字节序介绍及判断
- 浮点型在内存中的存储解析
文章目录
一、类型的基本归类
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就得到补码
补码转为原码的两种方式
第一种
通过倒推的方式 补码-1 得到反码 反码除符号位按位取反 得到原码
第二种
补码 先进行除符号位按位取反 然后再进行+1 得到原码
大小端存储模式
字节序是指多字节数据在内存或网络传输过程中的存储顺序。由于计算机硬件和软件的不同,字节序也会有不同的表示方式,主要分为大端字节序和小端字节序。
大端字节序
大端(存储)模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中
小端字节序
小端(存储)模式,是指数据的低位保存在内存的低地址中,而数据的高位,保存在内存的高地址中
这里设计一个程序来识别当前机器的字节序
#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;
}
完结
如这篇博客对大家有帮助的话,希望 三连 支持一下 !!! 如果有错误感谢大佬的斧正 如有 其他见解发到评论区,一起学习 一起进步。
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。