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语言之数据的存储 -> 正文阅读

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


一、数据类型

1.基本数据类型

char字符数据类型
short短整型
int整型
long长整型
long long更长整型
float单精度浮点数
double双精度浮点数

注:C语言中没有专门的字符串类型

2.类型的基本归类

有符号(signed):最高位是0,表示是正数;最高位是1,表示是负数。
无符号(unsigned):最高位也是数据位。

有符号(signed)无符号(unsigned)
char(-128~127)unsigned char (0~255)
short(signed short)unsigned short
int(signed int)unsigned int
long(signed long)unsigned long

示例:

unsigned int a = -10;
int b = -10;
printf("a = %u\n", a);//%u打印无符号数,意思是打印的一定是无符号数,不是无符号数,也认为是无符号数
printf("b = %u\n", b);
printf("a = %d\n", a);//%d打印有符号数,意思是打印的一定是有符号数,不是有符号数,也认为是有符号数

二、整形在内存中的存储

1.原码、反码、补码

正数的反码和补码都与原码相同;
负数的反码为原码符号位不变其他位取反,补码为反码+1。

正数(10)负数(-10)
原码00000000 00000000 00000000 0000101010000000 00000000 00000000 00001010
反码00000000 00000000 00000000 0000101011111111 11111111 11111111 11110101
补码00000000 00000000 00000000 0000101011111111 11111111 11111111 11110110

上表格示例(int):有4个字节=32位,整形在计算机中是以补码的形式进行存储的。

2.大小端字节序存储

(1)小端字节序存储:把一个数据的低位字节处的数据存放在低地址处;把高位字节处于的数据存放在高地址位。

(2)大端字节序存储:把一个数据的高位字节处的数据存放在低地址处;把低位字节处于的数据存放在高地址位。

例:下图是小端存储的。
在这里插入图片描述
判断系统大小端(示例):

//判断大小端
int check_sys(char* p) {
	if (*p == 1) {
		return 1;
	}
	else {
		return 0;
	}
}
int main()
{
	int c = 1;
	char* p = (char*)&c;
	int ret = check_sys(p);
	if (ret == 1) {
		printf("小端\n");
	}
	else {
		printf("大端\n");
	}
	return 0;
}

三、浮点型在内存中的存储

根据国际标准IEEE,任意一个二进制浮点数V可以表示成下面的形式:
(-1)^S * M * 2^E
(-1)^S:表示符号位,当S=0,V为正数;当S=1,V为负数。
M:表示有效数字,大于等于1,小于2。
2^E:表示指数位

示例:

	float f = 5.5;//101.1
	// (-1)^0*1.011*2^2
	// 101.1
	//s=0
	//M=1.011
	//E=2

四、练习

示例:

	int n = 9;
	//00000000 00000000 00000000 00001001
	float* pFloat = (float*)&n;
	//0 00000000 00000000000000000001001浮点型解析
	//s=0
	//E=1-127=-126
	//M=0.00000000000000000001001
	//(-1)^0*0.00000000000000000001001*2^(-126) //非常小无限接近0

	printf("n=%d\n", n);//9
	printf("*pFloat=%f\n", *pFloat);//0

	*pFloat = 9.0;//1001.0
	//(-1)^0*1.001*2^3
	//s=0
	//M=1.001
	//E=3 +127=130//修正值
	//0 10000010 00100000000000000000000  存放的二进制序列
	printf("n=%d\n", n);//(01000001000100000000000000000000)= 1091567616
	printf("*pFloat=%f\n", pFloat);//9.000000
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-03-13 21:33:09  更:2022-03-13 21:35:30 
 
开发: 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:45:02-

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