首页 > 系统相关 >作业随笔-数据在内存中的存储

作业随笔-数据在内存中的存储

时间:2023-04-07 23:41:27浏览次数:37  
标签:存储 int 补码 char 内存 printf 随笔

大小端存储

不同类型的整型提升

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;
}

标签:存储,int,补码,char,内存,printf,随笔
From: https://blog.51cto.com/u_15906483/6176557

相关文章

  • 【C】动态内存管理 malloc calloc relloc free 函数详解
    【C】动态内存管理@[toc]本章重点为什么存在动态内存分配动态内存函数的介绍mallocfreecallocrealloc常见的动态内存错误几个经典的笔试题1.为什么存在动态内存分配我们已经掌握的内存开辟方式有:#include<stdio.h>intmain(){ intnum=10;//向内存申请了4个字节的空间 int......
  • 关于结构体的内存对齐
    今日份学习“结构体的内存对齐”前言:该篇文章主要讲解“结构体”在内存中如何存储?结构体的大小(字节)如何计算?如何更好的创建一个结构体?OK!开始我们的表演你认为的结构体的大小:structs1{ charc1;inta;charc2;};structs2{ charc1;charc2;inta;};structs1......
  • 内存马学习
    内存马介绍webshell的变迁过程大致如下所述:web服务器管理页面——>大马——>小马拉大马——>一句话木马——>加密一句话木马——>加密内存马 内存马是无文件攻击的一种常用手段,传统的文件上传的webshll或以文件形式驻留的后门越来越容易被检测到,内存马使用越来越多。传统......
  • 逆向基础知识——软断点、硬件断点和内存断点
    1寄存器EAX:累加器,加减和比较运算都借助EAX来达到指令优化的效果,乘除必须在EAX中进行。EDX:数据寄存器,EAX的延伸。ECX:计数器ESI:源变址寄存器,存储输入数据流位置信息,“读”EDI:目的变址寄存器,指向相关数据操作结果存放位置,“写”ESP:栈指针,始终指向函数栈的最顶端EBP:基......
  • 4月7日leetcode随笔,异或的灵活运用
    给你一个非空整数数组nums,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。来源:力扣(LeetCode)链接:https://leetcode.cn/problems/single-number著作权归领扣......
  • 基于cpu和内存进行pod扩容,创建hpa
    基于cpu和内存进行pod扩容,创建hpa创建镜像mkdirphpcdphptouchdockerfiletouchindex.phpvimdockerfileFROMphp:5-apacheADDindex.php/var/www/html/index.phpRUNchmoda+rxindex.phpvimindex.php<?php$x=0.0001;for($i=0;$i<=1000000;$i++){......
  • 汽车随笔
    1、HMI和车机的区别在我的公司,似乎大家混淆了hmi和车机的区别,粗略的认为hmi=车机。事实上,车机就是车辆前部类似ipad的东西,属于车载信息娱乐系统;hmi是人机交互,包括更多的内容,车辆仪表盘,hud显示,各种按钮等都可以划分为hmi的范围。2、车载操作系统和车控操作系统随着新能源整车的......
  • 分布式存储技术(下):宽表存储与全文搜索引擎的架构原理、特性、优缺点解析
    对于写密集型应用,每天写入量巨大,数据增长量无法预估,且对性能和可靠性要求非常高,普通关系型数据库无法满足其需求。对于全文搜索和数据分析这类对查询性能要求极高的场景也是如此。为了进一步满足上面两类场景的需求,有了宽表存储和搜索引擎技术,本文将对他们的架构、原理、优缺点做介......
  • 分布式存储技术(下):宽表存储与全文搜索引擎的架构原理、特性、优缺点解析
    对于写密集型应用,每天写入量巨大,数据增长量无法预估,且对性能和可靠性要求非常高,普通关系型数据库无法满足其需求。对于全文搜索和数据分析这类对查询性能要求极高的场景也是如此。为了进一步满足上面两类场景的需求,有了宽表存储和搜索引擎技术,本文将对他们的架构、原理、优缺点做介......
  • 群晖DS920+网络附属存储服务器NAS部署示意图图示2023年4月7日
          群晖DS920+网络附属存储服务器NAS部署示意图图示2023年4月7日  ......