IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 数据的储存 -> 正文阅读

[C++知识库]数据的储存

1. 整形在内存中的存储

原码、反码、补码

整数是以二进制补码的形式在内存中储存的。
对于有符号的整型,二进制的最高位代表符号位,0代表正数,1代表负数
原码、反码、补码之间的转换
正整数
原,反,补是一样的。
负整数:
原码符号位不变,其他位按位取反得到反码,
反码加1变成补码.

2.类型转换

1.隐式类型转换

凡是低于int类型的,在进行运算时都要转换为int类型。这叫做整型提升
需要转换的类型
char
unsigned char
signed char
short
unsigned short

在c语言的标准中,并没有规定char是有符号的整型还是无符号的整型,完全取决你的编译器
char表示有符号的整型是时,它所表示数值的范围为==-128~127==
当它是无符号的整型的时候,它所表示数值的范围为0~255
这就是有符号char从-128~127之间形成的一个圆环,当127+1之后会变成-128

short是有符号的类型,它和unsigned short 一样
看下面的代码,助你理解

int main()
{
	char a = 0xb2;
	整型提升为0xffffffb2
	short b = 0xb200;
	整型提升为0xffffb200
	int c = 0xb2000000;
	不需要提升
	if (a == 0xb2)
		printf("a\n");
	if (b == 0xb200)
		printf("b\n");
	if (c == 0xb2000000)
		printf("c\n");
	return 0;
}

在这里插入图片描述

2.算术转换

在几个数在一起进行运算时,如果这几个数的类型不一样,就需要变成相同的类型进行运行,这就是普通的算术转换
这几个类型从高到低排的序
long double
double
float
unsigned long int
long int
unsigned int
int

算术转换要有意义,高精度转换为低精度的时候会造成部分数据的缺失

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

注意:是以字节的大小储存的
大端字节序储存:数据的低位存在地址的地方,数据的高位储存在地址的地方.
小端字节序储存:数据的低位存在地址的地方,数据的高位储存在地址的地方.
在这里插入图片描述
请你编程实现:判断你的机器是哪种储存方式

int panduan()
{
    int i = 1;
    return *(char*)&i;
}
int main()
{
    int ret=panduan();
    if (ret == 1)
        printf("小端\n");
    else
        printf("大端\n");
    return 0;
}

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

浮点型在内存中的储存与整型是完全不一样的
对于一个32位浮点数,第一位表示符号位(用S表示)后面的8位表示指数位(用E表示)剩下的位表示有效位(用M表示)
S:0表示正数,-1表示负数
E:指数加上127位=为它的储存数,并且这8位表示的是无符号的数
M:它的范围在1~2之间,储存的时候不必要储存1,储存小数点后面的
在这里插入图片描述
例如:

	float i=6.5;
	二进制为110.1   1.101 *2^2
	s为0
	E为2+127=129
	M为101   后面位用0进行填充
	0 10000001 10100000000000000000000
	16进制进行表示
	0x40d00000

我们来看看计算机运行的结果
在这里插入图片描述
相信大家应该明白了吧!
这里有几个注意的地方:
1. 当E全部为全0时,指数位为1-127(1-1023(这是64位的时候)) ,有效位M不需要再加上1,这个一个非常接近±0的数。
2. 当E全部为全1时,这是一个非常大的数,±无穷。
除了这个两个注意的地方为,怎么存进去的就怎么取出来。
对与64位的浮点型,符号位后面的11位表示指数位,加上1023,其余的和32位浮点型的描述差不多.

福利:博主教你学习

企鹅裙:720429262

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-03-08 22:10:02  更:2022-03-08 22:12:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 4:28:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码