深度剖析数据在内存中的存储(整形篇)

深度剖析数据在内存中的存储(整形篇)

  • 数据类型介绍
  • 类型的基本归类
  • 整形在内存中的存储
    • 1.原码,反码,补码
    • 2.大小端介绍

数据类型介绍

深度剖析数据在内存中的存储(整形篇)_第1张图片

  1. 查看各种类型的取值范围可以用下面的方法
    深度剖析数据在内存中的存储(整形篇)_第2张图片

深度剖析数据在内存中的存储(整形篇)_第3张图片
2.类型的意义:使用某一个类型开辟内存空间的大小(大小确定了取值范围)

类型的基本归类

1.整形家族:
深度剖析数据在内存中的存储(整形篇)_第4张图片
2.浮点数家族:
在这里插入图片描述
3.构造类型
深度剖析数据在内存中的存储(整形篇)_第5张图片
4.指针类型
深度剖析数据在内存中的存储(整形篇)_第6张图片
5.空类型(void 表示的空类型)

整形在内存中的存储

1.原码,反码,补码

在计算机中,整数有三种二进制表示方法,即原码,补码,反码
三种表示方法均由符号位数值位两部分,二进制的最高位就是符号位,符号位都是用0表示“正”,用1表示“负”。
**(1).**正整数的原码,反码,补码都相同
(2).负整数的三种表示方法各不相同
原码
直接将数值按照正负数的形式翻译成二进制就可以得到原码
反码
将原码的符号位不变,其他位次依次按位取反就可以得到反码
补码
反码+1就得到补码

下面给大家介绍下原码和补码的相互转换的一些方法
深度剖析数据在内存中的存储(整形篇)_第7张图片
原码到补码可以通过先取反在加1得到补码,而由补码转换成原码可以用先减一再取反,也可以先取反再加1.
(3).对于整形来说:数据存放在内存中存放的是他的补码
在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统
一处理;
同时,加法和减法也可以统一处理(CPU只有加法器)此外,补码与原码相互转换,其运算过程
是相同的,不需要额外的硬件电路。

2.大小端介绍

(1).什么是大端小端
大端存储模式(大端字节序存储):是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址
深度剖析数据在内存中的存储(整形篇)_第8张图片
**小端存储模式(小端字节序存储):**是指数据的低位保存在内存的低地址中,而数据的高位,保存在高地址中
(2).如何判断自己的机器是大端还是小端
深度剖析数据在内存中的存储(整形篇)_第9张图片


int check_sys()
{
	int a = 1;
	return *(char*) & a;//利用强制类型转换将int*转换成char*
}


#include
int main()
{
	int ret = check_sys();
	if (ret == 1)
	{
		printf("小端");
	}
	else
	{
		printf("大端");
	}
	return 0;
}

*强制类型转换可以改变一个地址向后走的步长(例:int类型+1走4个字节,char+1走1个字节)
**有符号的char在内存的存储
深度剖析数据在内存中的存储(整形篇)_第10张图片
*取值范围是(-128~127)
*
无符号的char在内存中的存储
深度剖析数据在内存中的存储(整形篇)_第11张图片
取值范围是(0~255)

你可能感兴趣的:(算法,c++,数据结构)