作业随笔-数据在内存中的存储
  sLjOnCldvVSM 2023年11月12日 47 0

大小端存储

不同类型的整型提升

int类型和folat类型在内存中的存储方式

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
//int main()//判断是大端存储方式还是小段存储方式
//{
//	//大端存储模式是指数据的低位保存在内存的高地址中,而数据的高位保存在内存的低地址中
//	//小端存储模式是指数据的高位保存在内存的低地址中,数据的低位保存在内存的高地址中
//	int a = 1;
//	char* p = (char*)&a;
//	if (*p == 1)
//	{
//		printf("小端存储\n");
//	}
//	else
//		printf("大端存储\n");
//	return 0;
//}
/*
int check_sys()//封装成函数
{
	int a = 1;
	char* p = (char*)&a;
	//返回1是小端
	//返回0是大端
	return *p;
}
//1.指针类型决定了解引用操作可以访问几个字符,char* p,访问了1个字节,int* p,访问了4个字节
//2.指针类型决定了指针+1或者-1,加的或减的是几个字节,char* p;p+1跳过1个字符,int* p;p+1,跳过一个整形,4个字节,double*,8个字节
int main()//判断是大端存储方式还是小段存储方式
{
	int ret = check_sys();
	if (ret == 1)
	{
		printf("小端存储\n");
	}
	else
		printf("大端存储\n");
	return 0;
}
*/
/*
int main()
{
	char a = -1;
	//int a=-1;-1的源码,反码,补码
	//10000000000000000000000000000001
	//11111111111111111111111111111110
	//11111111111111111111111111111111
	// 在char类型中
	// 11111111
	//打印整型%d,发生整型提升,按原符号提升
	//11111111111111111111111111111111补码
	//10000000000000000000000000000001源码

	signed char b = -1;
	//11111111
	//有符号数字整型提升,符号位为1
	//11111111111111111111111111111111补码
	//10000000000000000000000000000001源码

	unsigned char c = -1;
	//11111111
	//无符号数字,整型提升
	//00000000000000000000000011111111源码,补码,反码相同
	//转换为十进制为255
	printf("%d %d %d\n", a, b, c);
	return 0;
}
*/
/*
int main()
{
	char a = -128;
	//10000000
	//整型提升
	//11111111111111111111111110000000补码,直接按无符号数字打印,源码,反码补码相同

	printf("%u\n", a);
	//%d - 打印十进制的有符号数字
	//%u - 打印十进制的无符号数字
	return 0;
}
*/
//int类型在内存中的存储方式,folat类型在内存中的存储方式并不相同
//folat类型在内存中,根据IEEE,754文件以以下的方式进行存储
//(-1)^S * M * 2^E    ,存的时候E需要+127
int main()
{
	int n = 9;
	//0 00000000 00000000000000000001001 - 补码
	float* pFloat = (float*)&n;

	printf("n的值为:%d\n", n);//9

	printf("*pFloat的值为:%f\n", *pFloat);//0.000000
	//(-1)^0 * 0.00000000000000000000101 * 2^-126

	*pFloat = 9.0;
	//1001.0
	//1.001*2^3
	//(-1)^0 * 1.001 * 2^3    3+127=129
	//0 10000010 00100000000000000000000
	//直接打印出来十进制就出现了奇怪的数字
	printf("num的值为:%d\n", n);//
	printf("pFloat的值为:%f\n", *pFloat);//9.0000
	return 0;
}

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月12日 0

暂无评论

sLjOnCldvVSM