目录

  1. 数据类型详细介绍

  1. 整形在内存中的存储:原码,反码,补码

  1. 大小端字节序介绍及判断

  1. 浮点型在内存中的存储解析

  1. 数据类型详细介绍

整形:

1.为什么char类型也会归类到整形家族当中去呢?
字符存储和表示的时候本质上使用的是ASCII值,ASCII值是整数,字符也归类到整形。
2.为什么会存在无符号数和有符号数呢?
因为现实生活中描述一些变量时,存在一些数有正负,而一些数只有正数没有负数,例如年龄 温度
3.我们在使用int类型时,int就相当于signed int,只不过signed可以省略掉
而无符号整数只能写为 unsigned int
4.注意 char是否等价于singed char 取决于编译器,而大部分编译器char 都等价于singed char

构造类型:(自定义类型)

数组类型

结构体类型struct

枚举类型 enum

联合类型union

指针类型:

int* pa;

char* pb;

float* pc;

void* pd;

空类型:

void表示空类型(无类型)

通常应用于函数的返回类型,函数的参数,指针的类型

void test()//函数不需要返回值
{}
void test(void)//函数不需要参数
{}
void* p;//无具体类型的指针

2.整形在内存中的存储:原码,反码,补码

变量的创建是要在内存中开辟空间的,空间大小是根据不同的类型来决定的。

1.计算机中整数有3种二进制表示方法,即原码、反码、补码

2.三种表示方法均有符号位和数值位两部分,0表示正,1表示负

3.正数的原码、反码、补码都相同

负数原码:直接翻译成二进制就可以得到原码

负数反码:除符号位每一位按位取反得到反码

负数补码:反码基础上加1得到补码

4.整形在内存中是以补码的形式存储

int main()
{int a = 20;//00000000000000000000000000010100  原码 反码 补码int b = -10;//10000000000000000000000000001010  原码//11111111111111111111111111110101  反码//11111111111111111111111111110110  补码return 0;
}

为什么在计算机系统中数值一律用补码的形式进行存储呢?
原因是:使用补码,可以将符号位和数值域统一处理;同时加减法也可以统一处理, CPU只有加法器。
此外,原码和补码进行转换,其运算过程是相同的,不需要额外的硬件电路。

//1-1
//1+(-1)
//00000000000000000000000000000001
//10000000000000000000000000000001
//11111111111111111111111111111110
//100000000000000000000000000000000 1和-1的补码相加
//00000000000000000000000000000000 舍弃最高位

3.大小端字节序介绍及判断

为什么会出现这种倒放的现象呢?

因为任何数据在存储的过程中,如果它的大小大于1个字节,那么它在存储过程中就会存在一个存储顺序的问题。

大端字节序存储:把一个数据的低位字节的数据,存放在高地址处,把高位字节的数据存放在低地址处。

例如存储123:从3的开始依次向高位1存储

小端字节序存储:把一个数据的低位字节的数据,存放在低地址处,把高位字节的数据存放在高地址处。

上图为地址从低到高

知道了大小端字节序,那么我们就可以解决开头的地址倒放现象

所以开始的倒放现象是小端字节序存储的。


设计一个程序,判断数据是大端存储还是小端存储。

思路:假设我们要存储的是整形1,那么在内存中可能就会出现以下两种情况。

int main()
{int a = 1;//0x00000001char* p = (char*)&a;//访问1个字节if (*p == 1){printf("此数据为小端字节序存储\n");}else if (*p == 0){printf("此数据为大端字节序存储\n");}return 0;
}

封装为函数:

int check_sys()
{int a = 1;//0x00000001char* p = (char*)&a;//访问1个字节if (*p == 1)return 1;//小端elsereturn 0;//大端
}
int main()
{if (check_sys() == 1){printf("小端\n");}else{printf("大端\n");}return 0;
}

有符号char和无符号char的范围

所以推广我们可以得到:

short -2^15~2^15-1

unsigned short 0~ 2^16-1

%d打印有符号数
%u打印无符号数

以上程序为什么会出现这样的结果?

就是因为格式符使用错误导致的,所以在打印有符号和无符号数时,一定要注意格式控制符的使用

感谢阅读,继续剖析请看下回分解。

C语言 深度剖析数据在内存中的存储相关推荐

  1. C语言——深度剖析数据在内存中的存储

    大家好!我是保护小周ღ,本期为大家带来的是深度剖析数据在内存中的存储,不知道,大家学了这么久C语言,有没有想过一个问题,我们在程序设计中的数据是怎么在计算机中存储的?我们都知道 一个整型数据 int ...

  2. C语言—深度剖析数据在内存中的存储

    深度剖析数据在内存中的存储 数据类型介绍 类型的基本归类 整形在内存中的存储 大小端介绍 整形在内存中的存储的相关练习 浮点型在内存中的存储 浮点型在内存中的存储相关介绍 数据类型介绍 内置类型(C语 ...

  3. C语言 深度剖析数据在内存中的存储(2)

    本次博客是继上次博客,继续向下剖析数据在内存当中的存储. 练习 浮点型在内存中的存储 练习 代码1: int main() {char a= -1;signed char b=-1;unsigned ...

  4. C语言进阶——深度剖析数据在内存中的存储

    文章目录 数据类型的介绍 类型的基本归类 整形在内存中的存储 大小端介绍 一道笔试题 浮点数在内存中的存储 浮点数存储规则 剖析题目 数据类型的介绍 在我们之前的学习当中我们已经介绍了基本的内置类型 ...

  5. 深度剖析数据在内存中的存储2——浮点数数在内存中的存储

    根据国际标准IEEE:任意一个二进制浮点数V可以表示为下面形式: (-1)^SM2^E: (-1)^S表示符号位,当S为0,V为正数:当S为1,V为负数.由其物理结构决定了,浮点数为有符号数. M为有 ...

  6. 深度剖析数据在内存中的存储1——数据类型

    基本内置类型:char,short .int. long. long long .float.double. Ps:C语言没有字符串类型,字符串通过字符数组结尾\0表示. 类型意义: 1:使用该类型决 ...

  7. 深度剖析数据在内存中的存储(修炼内功~吊打面试官)

  8. 进阶-1-深度剖析数据在内存中的存储

    声明:所有资料都来自比特鹏哥的资料,C语言讲的十分好的一个老师!再次推荐大家去看老师的教程和资料!! 比特C语言学习笔记,资料请到比特主页:https://m.cctalk.com/inst/s9ye ...

  9. 【C语言】浮点型数据在内存中的存储方式

    目录 一. 前言 二. 问题的引出 三. 两类浮点型数据(float.double)在内存中的存储方式 3.1 两类浮点型数据的存储模型 3.1.1 浮点型数据数值读取的通用模型 3.1.2 floa ...

最新文章

  1. 谷歌浏览器添加JSON-Handle插件
  2. 操作系统原理第八章:内存管理
  3. VS2017-VC++校验和计算小工具
  4. python抽奖滚动界面_Python使用Tkinter实现转盘抽奖器的步骤详解
  5. MySQL笔记 4月记
  6. spring cloud简介之最好参考
  7. python通讯录运用的知识点_Python实现通讯录功能
  8. jQuery的一些基本的函数和用jQuery做一些动画操作
  9. 文件图片随机划分训练集和验证集
  10. 原生android系统换主题字体,Android 自定义字体,更换系统默认显示的字体使用自定义字体...
  11. Python字符串:isspace、istitle、isupper、islower
  12. 漫威 DC 英雄综合实力排位,这人秒杀灭霸
  13. JS高级---函数中的this的指向,函数的不同调用方式
  14. Java 8 effectively final
  15. 安装西门子TIA Portal V15.1提示先决条件不足如何处理?
  16. 2023年软考时间流程安排:
  17. 选址|如何开一家咖啡店?店铺租金多少合适?
  18. 解决pytorch当中RuntimeError: expected scalar type Double but found Float的问题
  19. 读地质图总结(瞎写的)
  20. 图像处理——孔洞填充算法

热门文章

  1. python福音,170道面试题,从基础到框架
  2. 2008北京奥运场馆(图)
  3. 产业链金融的前世今生
  4. 《HeadFirst设计模式》读书笔记-第9章v2-组合模式
  5. 推荐一款IP切换工具
  6. Quant进阶:用『最少』的数学,学『最全』的图神经网络
  7. 【CC评网】2013.第42周 话说时间管理
  8. 吉他传入几弦几品,自动计算出音阶
  9. ANSYS二次开发:后处理使用APDL命令流解析结果文件
  10. 女朋友说异性相吸,所以产生真爱!我觉得得用python验证一下