C语言——关于数据在内存中存储的练习

大家好,我是残念,希望在你看完之后,能对你有所帮助,有什么不足请指正!共同学习交流
本文由:残念ing原创CSDN首发,如需要转载请通知
个人主页:残念ing-CSDN博客,欢迎各位→点赞👍 + 收藏⭐️ + 留言📝
📣系列专栏:残念ing 的专题实践练习系列专栏——CSDN博客

————————————————————CSDN———————————————————

 

目录

练习1:根据大小端的概念,设计一个小程序来判断当前机器的字节序——百度笔试题

练习2

练习3.1

练习3.2

练习4

练习5.1

练习5.2

练习6

关于浮点数在内存中的存储练习7:


练习1:根据大小端的概念,设计一个小程序来判断当前机器的字节序——百度笔试题

#include <stdio.h>
int check_sys()
{
     int i = 1;
     return (*(char *)&i);
}
int main()
{
     int ret = check_sys();
     if(ret == 1)
     {
         printf("⼩端\n");
     }
     else
     {
         printf("⼤端\n");
     }
     return 0;
}

练习2

int main()
{
	char a = -1;
	//100000000000000000000000001
	//111111111111111111111111110
	//111111111111111111111111111
	//存储在a中要发生截断
	//char-a-11111111
	//111111111111111111111111111--整型提升
	//100000000000000000000000000
	//100000000000000000000000001
	signed char b = -1;
	//11111111-b
	unsigned char c = -1;
	//11111111-c
	//000000000000000000011111111-无符合整数提升就高位补0;
	printf("a=%d,b=%d,c=%d", a, b, c);//-1,-1,255
	//%d-十进制的形式打印有符号的整数
	return 0;
}

signed char 的取值范围:-128——127 

unsigned char 的取值范围:0——255

练习3.1

//signed char  的取值范围:-128—127
//unsigned char 的取值范围:0—255
#include <stdio.h>
int main()
{
	char a = -128;
	//10000000-a
	//打印时整型提升
	//111111111111111110000000
	printf("%u\n", a);
	//%u 是十进制的形式打印无符合的整数
	return 0;
}

练习3.2

#include <stdio.h>
int main()
{
	char a = 128;
	//00000000000000000000000010000000
	//100000000-a
	printf("%d\n", a);
	return 0;
}

练习4

#include <stdio.h>
#include<string.h>
int main()
{
	char a[1000];
	//-128~127
	//-1 -2 -3 ....-128 127126...3 2 1 0 -1 -2....
	int i;
	for (i = 0; i < 1000; i++)
	{
		a[i] = -1 - i;
	}
	printf("%d", strlen(a));//求字符串长度找的是\0,\0 的ASCII码的值是0
	//128+127= 225
	return 0;
}

练习5.1

#include <stdio.h>
unsigned char i = 0;
int main()
{
	for (i = 0; i <= 255; i++)//死循环
	{
		printf("hello world\n");
	}
	return 0;
}

练习5.2

#include <stdio.h>
int main()
{
	unsigned int i;
	//死循环
	for (i = 9; i >= 0; i--)
	{
		printf("%u\n", i);
	}
	return 0;
}

练习6

#include <stdio.h>
int main()
{
	int a[4] = { 1, 2, 3, 4 };
	int* ptr1 = (int*)(&a + 1);//跳过整个数组
	int* ptr2 = (int*)((int)a + 1);//跳过一个字节
	printf("%x,%x", ptr1[-1], *ptr2);//ptr1[-1]--*(ptr1—1)
	return 0;
}

关于浮点数在内存中的存储练习7:

//整数的存储方式和浮点数的存储方式不同
#include <stdio.h>
int main()
{
	int n = 9;
	float* pFloat = (float*)&n;
	//强制类型转换
	printf("n的值为:%d\n", n);
	printf("*pFloat的值为:%f\n", *pFloat);
	*pFloat = 9.0;
	printf("num的值为:%d\n", n);
	printf("*pFloat的值为:%f\n", *pFloat);
	return 0;
}

解析:

为什么 9 还原成浮点数,就成了 0.000000 ?

n=9 的二进制序列为:000000000000000000000000000001001

将其进行拆分后得:s=0;E=00000000;M=000000000000000000001001;

由于E全为0;所以浮点数V就写为:

V=(-1)^0 × 0.00000000000000000001001×2^(-126)=1.001×2^(-146)

可以看出V是⼀个很⼩的接近于0的正数,所以⽤⼗进制⼩数表⽰就是0.000000。

浮点数9.0,为什么整数打印是 1091567616   ?

⾸先,浮点数9.0 等于⼆进制的1001.0,即换算成科学计数法是:1.001×2^3

所以:9.0  =  (−1)^ 0  (1.001)  *2^3

可以知道:S=0;E=3+127=130;M=00100000000000000000000;

所以,写成⼆进制形式,应该是S+E+M,即0 10000010 001 0000 0000 0000 0000 0000

这个32位的⼆进制数,被当做整数来解析的时候,就是整数在内存中的补码,原码正是 1091567616 。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/267558.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

gitattributes配置文件的作用

0 Preface/Foreword Git版本管控工具功能强大&#xff0c;在使用过程中&#xff0c;在多人合作的项目开发过程中&#xff0c;经常会遇到提交代码时出现的warning提醒&#xff0c;尤其是换行符。 Linux/Unix/Mac OS操作系统的换行符使用LF符号&#xff08;\n&#xff09;&…

基于python的selenium

一.安装 安装WebDriver 查看chrome版本号&#xff0c;设置-帮助-关于Google chrome&#xff0c;找到版本号。 可以到这个网站进行下载对应版本的chromedriver,如果chrome浏览器版本过高,可以下载最新版的chromedriver进行使用 Chrome for Testing availability 下载下来之后…

(附源码)SSM银行账目管理平台 计算机毕设43684

摘 要 当今社会已进入信息社会时代&#xff0c;信息已经受到社会的广泛关注&#xff0c;被看作社会和科学技术发展的三大支柱(材料,能源,信息)。信息是管理的基础&#xff0c;是进行决策的的基本依据。在一个组织里信息已作为人力,物力,财力之外的第四种能源,占有重要的地位。然…

Simulink元件

constant元件 输出常数/标量 这样我们就只输出了一个常数 输出一维数组/矢量 这样我们就输出了1-5一共5个数字 输出二维数组 这样我们就输出了4个数字 选择框Interpret vector parameters as 1-D 如果标量或者矩阵&#xff0c;勾与不勾都一样。 如果是向量&#xff0c;勾选…

【OAuth2】:赋予用户控制权的安全通行证--原理篇

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于OAuth2的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一.什么是OAuth? 二.为什么要用OAuth?…

基于SpringBoot+Vue的办公OA系统

开发环境 IDEA JDK1.8 MySQL8.0Node14.17.0 系统简介 本系统为前后端分离项目&#xff0c;主要拥有两个身份登录系统&#xff0c;管理员可以发布公告等信息&#xff0c;员工登录可以申请请假等信息&#xff0c;系统难度适中&#xff0c;适合学习研究使用&#xff0c;具体请…

python脚本 ssh工具 ssh上传文档 选择文档并上传到ssh服务器

此文分享一个python脚本,用于快速的定位、选择文档,并将其上传到指定的ssh服务器。 效果演示 🔥完整演示效果 👇第一步,显然,我们需要选择功能 👇第二步,我们需要定位并选择需要上传的文档 👇第三步,确认我们需要上传文档的ssh服务器 👇第四步,定位、选择…

机场数据治理系列介绍(2):六图法开展数据治理的步骤与要点

目录 一、机场数据治理的六图法 1、何为六图法 二、应用数据治理六图法的相关工作步骤 1、制定战略目标 2、梳理业务情况 3、收集需求 4、构建数智应用地图 5、选择合适的算法 6、建立数据地图 7、持续改进和优化 三、相关要点 1、明确数据治理三张清单 2、持续构…

PyTorch官网demo解读——第一个神经网络(3)

上一篇&#xff1a;PyTorch官网demo解读——第一个神经网络&#xff08;2&#xff09;-CSDN博客 上一篇文章我们讲解了第一个神经网络的模型&#xff0c;这一篇我们来聊聊梯度下降。 大佬说梯度下降是深度学习的灵魂&#xff1b;梯度是损失函数&#xff08;代价函数&#xff…

stm32 pwm输出

PWM 技术原理 CUBEMX PWM配置 pwm初始化 MX_TIM2_Init(); HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_4);设置pwm //pwmVal 0 ~ 1000 __HAL_TIM_SetCompare(&htim2, TIM_CHANNEL_4, pwmVal);

Python patchworklib任意合并子图,多图形混合排版

【背景】 数据展示时&#xff0c;在同一页面上混合排版多个图形是一种常见的用法。本次分享一个Python轮子patchworklib库&#xff1a;通过|、/轻松实现图形排列&#xff1b;比matplotlib、seaborn等自带子图功能更加灵活; 【patchworklib简介】 Patchworklib 是与 matplotl…

Java---IO流讲解(1)

文章目录 1. File类1.1 File类概述和构造方法1.2 File类创建功能1.3 File类删除功能 2. IO流2.1 IO流概述2.2 分类 3 字节流3.1 字节流写数据3.2 字节流写数据的3种格式3.3 字节流写数据的两个小问题3.4 字节流写数据加异常处理3.5 字节流读数据3.6 字节缓冲流 1. File类 1.1 …

【FPGA】分享一些FPGA协同MATLAB开发的书籍

在做FPGA工程师的这些年&#xff0c;买过好多书&#xff0c;也看过好多书&#xff0c;分享一下。 后续会慢慢的补充书评。 【FPGA】分享一些FPGA入门学习的书籍【FPGA】分享一些FPGA协同MATLAB开发的书籍 【FPGA】分享一些FPGA视频图像处理相关的书籍 【FPGA】分享一些FPGA高速…

62权限提升-烂土豆dll劫持引号路径服务权限

必备知识点&#xff1a;令牌窃取配合烂土豆提权&#xff0c; 单纯令牌窃取&#xff1a;web提权或者本地提权 如果配合烂土豆提权&#xff0c;就需要web权限和数据库权限。配合烂土豆的就用不了本地提权了&#xff0c; 烂土豆的原理&#xff0c; 他进行提权的时候用到的是关…

代码随想录算法训练营第四十三天|1049. 最后一块石头的重量 II、494. 目标和、474.一和零

代码随想录 (programmercarl.com) 1049. 最后一块石头的重量II 核心思路&#xff1a;将石头分成重量近似的两堆&#xff0c;与之前的416.分割等和子集问题很相似。 1.确定dp数组以及下标的含义 dp[j]表示容量为j的背包&#xff0c;最多可以背的最大重量为dp[j]。 其中&…

FPGA高端项目:UltraScale GTH + SDI 视频编解码,SDI无缓存回环输出,提供2套工程源码和技术支持

目录 1、前言免责声明 2、相关方案推荐我这里已有的 GT 高速接口解决方案我目前已有的SDI编解码方案 3、详细设计方案设计框图3G-SDI摄像头LMH0384均衡EQUltraScale GTH 的SDI模式应用UltraScale GTH 基本结构参考时钟的选择和分配UltraScale GTH 发送和接收处理流程UltraScale…

HFish蜜罐搭建及简单使用

一、HFish蜜罐 HFish是一款社区型免费蜜罐&#xff0c;侧重企业安全场景&#xff0c;从内网失陷检测、外网威胁感知、威胁情报生产三个场景出发&#xff0c;为用户提供可独立操作且实用的功能&#xff0c;通过安全、敏捷、可靠的中低交互蜜罐增加用户在失陷感知和威胁情报领域的…

零基础学人工智能:TensorFlow 入门例子

识别手写图片 因为这个例子是 TensorFlow 官方的例子&#xff0c;不会说的太详细&#xff0c;会加入了一点个人的理解&#xff0c;因为TensorFlow提供了各种工具和库&#xff0c;帮助开发人员构建和训练基于神经网络的模型。TensorFlow 中最重要的概念是张量&#xff08;Tenso…

I Doc View在线文档预览系统 cmd.json RCE漏洞复现

0x01 产品简介 IDocView是一个在线文档解析应用,旨在提供便捷的文件查看和编辑服务。 0x02 漏洞概述 I Doc View在线文档预览系统 cmd.json 接口处存在命令执行漏洞,攻击者可通过该漏洞在服务器端任意执行代码,写入后门,获取服务器权限,进而控制整个web服务器。 0x03 影…

Linux入门基础知识

1. 什么是操作系统&#xff1f; 正式定义&#xff1a;负责管理计算机的硬件和软件资源&#xff0c;并合理的组织调度计算机的工作和资源的分配&#xff0c;以提供给用户和其他软件方便的接口和环境&#xff0c;它是计算机系统的系统软件。 通俗定义&#xff1a;是一个系统软件…