C—数据的储存(下)
文章目录
- 前言
- 🌟一、练习一下
- 🌏1.例一
- 🌏2.例二
- 🌏3.例三
- 🌏4.例四
- 🌟二、浮点型在内存中的储存
- 🌏1.浮点数
- 🌏2.浮点数存储
- 💫(1).二进制浮点数
- 💫(2).浮点数的存储规定
- 💫(3).浮点数的取出规定
- 🌏3.例题
- 😽总结
前言
👧个人主页:@小沈熬夜秃头中୧⍤⃝❅
😚小编介绍:欢迎来到我的乱七八糟小星球🌝
📋专栏:C语言学习
🔑本章内容:C-数据的储存(下)
送给各位💌:学无止境
记得 评论📝 +点赞👍 +收藏😽 +关注💞哦~
🌟一、练习一下
🌏1.例一
看过C语言学习第十五弹后我们一起来做一下下面这道例一
#include<stdio.h>
#include<windows.h>
int main()
{unsigned int i;for (i = 9; i >= 0; i--){printf("%u\n", i);Sleep(1000);//单位毫秒}return 0;
}
答案:死循环
解析:因为这是一个无符号int 类型的i所以当i=0再- -时,成为-1,但是无符号整形中没有符号位所以就变成了一个很大的数一直打印这个条件恒成立,所以就死循环了

🌏2.例二
看过例一我们来做一下例二:
#include<stdio.h>
#include<windows.h>
int main()
{unsigned int i;for (i = 9; i >= 0; i--){printf("%d\n", i);Sleep(1000);//单位毫秒}return 0;
}
答案:死循环
解析:虽然这是一个无符号整形i,但是打印的时候用的%d(打印有符号整形的),所以它是由符号位的,但有人可能要问了-1不就不满足i>=0吗?别忘了i是一个我无符号整型只不过打印用的%d但这并不影响i是一个无符号整型所以判断的时候i>=0是根据无符号数判断的

🌏3.例三
#include<stdio.h>
int main()
{char a[1000];int i;for (i = 0; i < 1000; i++){a[i] = -1 - i;}printf("%d", strlen(a));return 0;
}
答案:255
解析:经过循环a[i]里面存的是-1 -2 -3…-127 -128但是char 类型所以不存在-129 -130…-1000,-128减去1,就变成了127 依次往后127 126 125…3 2 1 0,这才是256个数字了,所以接着循环3 2 1 0…-128 -127-126…127 …3 2 1 0直到数组填满但是strlen是求字符串的长度,找的是\0,\0的ASCII码值是0所以到第一次为0的时候就找到了长度是255.


🌏4.例四
#include<stdio.h>
unsigned char i = 0;
int main()
{for (i = 0; i <= 255; i++){printf("hello world\n");}return 0;
}
答案:死循环
解析:
因为无符号char的范围是0~255;所以当i=255是再++不会变成256因为会发生截断再次变成0由此造成死循环。下面是256的二进制位可以看到截断后二进制是00000000所以不会出现266,条件恒成立。


🌟二、浮点型在内存中的储存
🌏1.浮点数
浮点数的家族包括:float, double ,long double
浮点数表示范围:float.h中定义
🌏2.浮点数存储
💫(1).二进制浮点数
根据国际标准IEEE(电气和电子工程协会)754,任意一个二进制浮点数v可以表示成下面的形式:
(1). (-1)^S* M* 2^E
(2).(-1)^S表示符号位,当S=0,V为正数;当S1,为负数。M表示有效数字,大于等于1,小于2’。
(3).2^E表示指数位。
v = (-1)^ s * 2^E * M
举例来说:根据上述公式,5.5 怎么写呢?
解析:1111.1111,我们都知道二进制位每位都有权重,小数点前面的1权重是0依次往前就是0 1 2 3…;小数点后面的权重则是-1依次往后-1 -2 -3…;所以5.5的二进制可以写成101.1,小数点往前移可以写成1.011*2^2,前面的第一个2代表二进制而第二个2代表移动了两位;加上正负号,因为5.5是正数所以S=0,最终可以写成V=(-1) ^ 0 * 2 ^2 1.011.所以S=0;M=1.011;E=2
举例来说:那么5.0和-5.0怎么写呢?
解析:十进制的5.0,写成二进制是101.0,相当于1.01×2^2。那么,按照上面V的格式,可以得出S=0,M=1.01,E=2。
十进制的-5.0,写成二进制是-101.0,相当于-1.01x2^2。那么,S=1,M=1.01,E=2。
举例来说:那么5.3怎写呢?
解析:十进制的5.3 写成二进制是不能精准由后面的数凑出来所以说不能精准保存
举例来说:那么0.5怎么写呢?
十进制的0.5,写成二进制是0.1(小数点后的第一位权重是-1所以相当于2^(-1)),也就是0.5,相当于1.0*2 ^(-1)。那么,按照上面V的格式,可以得出S=0,M=1.0,E=-1。
💫(2).浮点数的存储规定
IEEE 754对有效数字M和指数E,还有一些特别规定。
前面说过,1<M<2,也就是说,M可以写成1.xxxxxx的形式,其中xxxxxx表示小数部分。IEEE 754规定,在计算机内部保存M时,默认这个数的第一位总是1,因此可以被舍去,只保存后面的xxxxxx部分。比如保存1.01的时候,只保存01,等到读取的时候,再把第一位的1加上去。这样做的目的,是节省1位有效数字。以32位浮点数为例,留给M只有23位,将第一位的1舍去以后,等于可以保存24位有效数字。
至于指数E,情况就比较复杂。
首先,E为一个无符号整数(unsigned int)这意味着,如果E为8位,它的取值范围为O~255;如果E为11位,它的取值范围为0-2047。但是,我们知道,科学计数法中的E是可以出现负数的,所以IEEE754规定,存入内存时E的真实值必须再加上一个中间数,对于8位的E,这个中间数是127;对于11位的E,这个中间数是1023。比如,2^10的E是10,所以保存成32位浮点数时,必须保存成10+127=137,即10001001。
float 32位的浮点型
double 64位的浮点型

也就是:例如5.5的存法
二进制:101.1
(-1)^ 01.011 * 2^2根据规定float类型E+127就变成了129;129的二进制序列10000001(E);M存的小数点后面的也就是(01100000000000000000000)再加上S中存储的0就变成了01000000101100000000000000000000转换成十六进制(四个二进制转换成一个十六进制位4 0 b 0 0 0 0 0

💫(3).浮点数的取出规定
然后,指数E从内存中取出还可以再分成三种情况:
(1).E不全为0或不全为1
这时,浮点数就采用下面的规则表示,即指数E的计算值减去127(或1023),有效数字M前加上第一位的1。
比如:
0.5 (1/2)的二进制形式为0.1,由于规定正数部分必须为1,即将小数点右移1位,则为1.0*2N(-1),其阶码为-1+127=126,表示为01111110,而尾数1.0去掉整数部分为0,补齐0到23位00000000000000000000000,则其二进制表示形式为:0 01111110 00000000000000000000000
(2).E全为0
这时,浮点数的指数E等于1-127(或者1-1023)即为真实值,有效数字M不再加上第一位的1,而是还原为0.xxxxxx的小数。这样做是为了表示(±)0,以及接近于0的很小的数字。
(3).E全为1
这时,如果有效数字M全为0,表示±无穷大(正负取决于符号位s);
🌏3.例题

解析:
以整数的视角,存放整型的数字
00000000000000000000000000001001-9的原反补相同;9(%d打印整形)
浮点数存储:
0(S) 00000000(E) 0000000000000000001001(M);E为全0,浮点数的指数E等于1-127(或者1-1023)即为真实值;E=1-127=-126;有效数字M不再加上第一位的1,而是还原为0.xxxxxx的小数M=0.0000000000000000001001
(-1)^ 0 * 0.00000000000000000010012^(-126)所以浮点数打印出来是0.000000
以浮点数的视角,存放浮点型的数字
二进制:1001.0
1.0012^3
(-1)^ 0 * 1.001 * 2^3
S=0;E=3;M=1.001*
01000001000100000000000000000000-正数原码反码补码相同%d打印出来是1091567616
😽总结
😽Ending,今天的C—数据的储存(下)内容就到此结束啦~,如果后续想了解更多,就请关注我吧,一键三连哦 ~
相关文章:
C—数据的储存(下)
文章目录 前言🌟一、练习一下🌏1.例一🌏2.例二🌏3.例三🌏4.例四 🌟二、浮点型在内存中的储存🌏1.浮点数🌏2.浮点数存储💫(1).二进制浮点数&#x…...
「软件测试面试干货」2023年软件测试面试题大全(持续更新)附答案..
先卖个关子,如果你是面试官,你希望招一个什么样的人进来? 如果这个问题搞明白了,那么可以说测试岗位的面试,就变得非常轻松了。 按照一般的惯例,面试官都会让你自我介绍,介绍你的项目经验&…...
YOLOv2论文对比总结
1、高分辨率图片效果提升 2、Anchor 3、Loss函数 4、小目标友好...
数据中心机房机柜配电新模式的探讨与选型
安科瑞 华楠 摘 要:对数据中心机房列头柜配电方式特征和问题进行深入研究,分析机房末端配电安全性及可用性,主要阐述了数据中心机房机柜配电新模式。 关键词:数据中心;机房机柜;配电模式 1 原始配电方案 …...
Redis未授权访问漏洞
前言 传统数据库都是持久化存储到硬盘中,所以执行某些业务时传统数据库并不是很理想。redis等数据存储在内存中的数据库就应允而生了。基于内存的Redis读速度是110000次/s,写速度是81000次/s 。但是基于内存的缺点就是断电即失,如果服务器产生了意外…...
Python 各种进制转换
def binary_to_decimal(binary_number):#2进制转换成10进制return int(binary_number, 2) def hex_to_decimal(binary_number):#hexadecimal #16进制转换成10进制return int(binary_number, 16) def octal_to_decimal(binary_number):#8进制转换成10进制return int(binary_numb…...
关于K8s的Pod的详解(一)
关于K8s的Pod的详解(一) Pod和API server的通信加快Pod启动更改Pod的资源Pod 的持久卷的单个访问模式Pod 拓扑分布约束Pod 拓扑分布中的最小域数 Pod 作为k8s创建,调度,管理的基本单位。由上级的Controller对Node上安装的Kubelet发…...
Vue3通透教程【十六】TS编译配置
文章目录 🌟 写在前面🌟 初始化配置文件⭐ target⭐ module⭐ lib⭐ types/node⭐ include⭐ outDir🌟 写在最后 🌟 写在前面 专栏介绍: 凉哥作为 Vue 的忠实 粉丝输出过大量的 Vue 文章,应粉丝要求开始更…...
OpenCV系列__chapter2
这里写目录标题 1 图像加减乘除位运算1.1 加法 img cv2.add(img1, img2)1.2 减法 img cv2.subtract(img1, img2)1.3 乘法 img cv2.multiply(img1, img2)1.4 除法 img cv2.divide(img1, img2)1.5 位运算 cv2.bitwise_and() 2 图像增强2.1 线性变换2.2 非线性变换 3 图像几何…...
Chat GPT是什么,初学者怎么使用Chat GPT,需要注意些什么
目录 Chat GPT是什么 初学者怎么使用Chat GPT 使用Chat GPT需要注意什么 一些简单的prompt示例 Chat GPT是什么 Chat GPT是由OpenAI开发的一种大型语言模型,它基于GPT(Generative Pre-trained Transformer)架构。GPT是一种基于深度学习的…...
hcip mgre与rip实验
要求: 1.toop搭建 2.IP地址规划 R1g 0/0/1 192.168.1.1 24 s 4/0/0 188.0.0.2 24 t:10.0.0.1 24R2 s 4/0/0 188.0.0.1 24 s 4/0/1 188.0.1.1 24 s 3/0/0 188.0.2.1 24 loop0 8.8.8.8 24 t:10.0.0.2 24 R3g…...
骨传导耳机对身体有没有别的危害?骨传导耳机有什么好处?
骨传导耳机对身体有没有别的危害? 在此之前,我们先了解一下骨传导的原理:骨传导就跟它的名字一样通过骨头传声,主要是借助头部颅骨传递到听觉中枢,这种传播方式省略了直接接触耳道和耳膜。打个比方,就是我们…...
c++11/c++98动态规划入门第5课,经典DP问题 --- 区间
第1题 取数问题 查看测评数据信息 有一排N个数,你和小明2个人玩游戏,每个人轮流从2端取数,每次可以从左或右取,不能从中间取。你取的所有的数的和是你的得分,小明取的所有的数的和是小明的得分。如果你先取&#x…...
vue中重新获取数据导致页面加长,要求在页面更新之后浏览器滚动条滚动到之前浏览记录的位置。以及获取当前页面中是哪个元素产生滚动条的方法。
目前的页面样式为: 代码是: <section id"detailSection"><el-tableref"multipleTable":data"logDetailList"style"width: 650px;margin:20px auto;"id"dialogDetail":show-header"fals…...
【深度学习】日常笔记14
对神经网络模型参数的初始化方案对保持数值稳定性有很重要的作用。初始化⽅案的选择可以与⾮线性激活函数的选择有趣的结合在⼀起。 突然有感触:做习题和模拟考研就分别是训练集和验证集,考研不就是最后的测试集() p168的↓的解释…...
[JAVAee]synchronized关键字
目录 1.synchronized的特性 ①互斥性 ②可重入性 2.synchronized的使用示例 ①修饰普通方法 ②修饰静态方法 ③修饰代码块 1.synchronized的特性 ①互斥性 互斥性,就像是给门上锁了一样. 当A线程使用了被synchronized修饰的代码块并对其上锁,其他线程(B线程,C线程)想要使…...
Unity游戏源码分享-3d机器人推箱子游戏
Unity游戏源码分享-3d机器人推箱子游戏 一个非常意思的3D游戏 工程地址:https://download.csdn.net/download/Highning0007/88098014...
SAAS部署模式
SAAS(Software as a Service)顾名思义,软件即服务的产品。 常见部署模式: 公有云:SAAS产品部署在公有云平台上,由SAAS提供商管理整个基础架构和应用程序。客户通过互联网访问和使用SAAS产品,无…...
11、PHP面向对象1
1、PHP的面向对象与其他语言类似,但也有不同。 PHP访问成员变量时,需要用“->”,而不能用“.”,访问成员函数时,需要用“->”,而不能用“.”。操作符“::”可以在没有任何声明实例的情况下访问类中的…...
实训笔记7.25
实训笔记7.25 7.25笔记一、MapReduce的特殊使用场景1.1 通过MapReduce程序实现多文件Join操作1.1.1 通过在Reduce端实现join操作1.1.2 通过在Map端实现join操作 1.2 MapReduce中的计数器的使用1.2.1 计数器使用两种方式 1.3 MapReduce实现数据清洗 二、MapReduce的OutputFormat…...
shell脚本--常见案例
1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件: 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
LeetCode - 199. 二叉树的右视图
题目 199. 二叉树的右视图 - 力扣(LeetCode) 思路 右视图是指从树的右侧看,对于每一层,只能看到该层最右边的节点。实现思路是: 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...
JavaScript 数据类型详解
JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型(Primitive) 和 对象类型(Object) 两大类,共 8 种(ES11): 一、原始类型(7种) 1. undefined 定…...
Web中间件--tomcat学习
Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机,它可以执行Java字节码。Java虚拟机是Java平台的一部分,Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...
比较数据迁移后MySQL数据库和OceanBase数据仓库中的表
设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...
(一)单例模式
一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...
PHP 8.5 即将发布:管道操作符、强力调试
前不久,PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5!作为 PHP 语言的又一次重要迭代,PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是,借助强大的本地开发环境 ServBay&am…...
消防一体化安全管控平台:构建消防“一张图”和APP统一管理
在城市的某个角落,一场突如其来的火灾打破了平静。熊熊烈火迅速蔓延,滚滚浓烟弥漫开来,周围群众的生命财产安全受到严重威胁。就在这千钧一发之际,消防救援队伍迅速行动,而豪越科技消防一体化安全管控平台构建的消防“…...
人工智能 - 在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型
在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型。这些平台各有侧重,适用场景差异显著。下面我将从核心功能定位、典型应用场景、真实体验痛点、选型决策关键点进行拆解,并提供具体场景下的推荐方案。 一、核心功能定位速览 平台核心定位技术栈亮…...

