十、C语言:数据存储(大端小端存储,整型、浮点型存储)

一、大端存储与小端存储

大端字节序:

数据的低位字节序内容存放在高地址处,高位字节序内容存放在低地址处

小端字节序:

数据的低位字节序内容存放在低地址处,高位字节序内容存放在高地址处

//每个地址单元对应一个字节


二、 整型存储

char a = -128;
//10000000 00000000 00000000 10000000
//11111111 11111111 11111111 01111111
//11111111 11111111 11111111 10000000 - 补码
//10000000 - a
printf("%u\n", a);

分析:字符型a以%u形式进行打印,发生整型提升,变为11111111 11111111 11111111 10000000。

因为是以无符号形式进行打印,所以补码与原码相等,结果为4294967168。


char a = 128;
//00000000 00000000 00000000 10000000
//10000000 - a
//发生整型提升,认为a是负数,补1
//11111111 11111111 11111111 10000000 
printf("%u\n", a);

结果为4294967168。


三、有符号char的取值范围 

注意: 10000000-> -128

char a[1000];
int i;
for(i=0; i<1000; i++)
{
    a[i] = -1 - i;
}
printf("%d\n", strlen(a));

 分析:-1 -2 -3 。。。 -127 -128 127 126 。。。 3 2 1 0 -1 -2 -3 。。。

strlen(a)遇到->\0停止,即遇到0停止。结果:128+127 = 255


四、浮点型存储 

	int n = 9;
	float* pf = (float*)&n;
	printf("n的值为%d\n", n);
	printf("* pf的值为%f\n", *pf); //整型方式存储,浮点型方式读取
	*pf = 9.0;
	printf("num的值为%d\n", n); //浮点型方式存储,整型方式读取
	printf("* pf的值为%f\n", *pf);

分析: 9《——》00000000 00000000 00000000 00001001

        以浮点数形式打印,E全为0,表示这个数很小,所以结果是0.000000


9.0按照浮点数进行存储,1001.0——》(-1)^0 * 1.001 * 2^3

s = 0; M = 001; E = 3+127 = 130

0 10000010 00100000000000000000000以10进制进行打印结果为1,091,567,616

	int n = 9;
	printf("%f\n", n);
	float m = 9.0;
	printf("%d\n", m);

4.1 写数据

浮点数:5.5   ——10进制

二进制:101.1 —— >1.011*2^2 ——>(-1)^0 * 1.011*2^2

s = 0; M = 1.011; E = 2 


4.1.1 对于32位的浮点数 

4.1.2 对于64位的浮点数 


1.
1≤M<2 ,也就是说,M可以写成 1.xxxxxx 的形式,其中xxxxxx表示小数部分。
IEEE 754规定,在计算机内部保存M时,默认这个数的第一位总是1,因此可以被舍去,只保存后面的xxxxxx部分。比如保存1.01的时候,只保存01,等到读取的时候,再把第一位的1加上去。这样做的目的,是节省1位有效数字。以32位浮点数为例,留给M只有23位,将第一位的1舍去以后,等于可以保存24位有效数字。

2.

科学计数法中的E是可以出现负数的,所以IEEE754规定,存入内存时E的真实值必须再加上一个中间数,对于8位的E,这个中间数是127;对于11位的E,这个中间数是1023。比如,2^10的E是10,所以保存成32位浮点数时,必须保存成10+127=137,即10001001。

浮点数:5.5   ——10进制

二进制:101.1 —— >1.011*2^2 ——>(-1)^0 * 1.011*2^2

s = 0; M = 1.011; E = 2 

s = 0; M = 011;    E = 2 +127 = 129

0 10000001 01100000000000000000000

注意M = 011从左向右写


 4.2 读数据

 4.2.1 E不全为0或不全为1(正常情况)

浮点数就采用下面的规则表示,即指数E的计算值减去127(或1023),得到真实值,再将
有效数字M前加上第一位的1。

4.2.2 E全为0

表示存储的数据是一个很小的数,2^-127(-127+127=0);
这时,浮点数的指数E等于1-127(或者1-1023)即为真实值,有效数字M不再加上第一位的1,而是还原为0.xxxxxx的小数。这样做是为了表示±0,以及接近于0的很小的数字。

4.2.3 E全为1

表示存储的数据是一个很大的数,2^128(128+127=255, E全为1);
这时,如果有效数字M全为0,表示±无穷大(正负取决于符号位s);

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

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

相关文章

Windows定时邮件发送的方法?有哪些限制?

Windows定时邮件发送需要哪些配置&#xff1f;如何设置邮件群发&#xff1f; 在我们日常工作中&#xff0c;需要定时发送邮件是一个常见的需求&#xff0c;尤其是在处理跨时区的业务或者需要定期提醒的情况下。Windows系统提供了多种方法来实现定时邮件发送&#xff0c;AokSen…

北斗高精准定位:电动自行车行业的新引擎

近年来&#xff0c;随着科技的发展与智能化进程的加快&#xff0c;电动自行车行业也迎来了新的变革。毫无疑问&#xff0c;北斗高精度定位技术逐渐成为这一行业的关键突破。本文将详细探讨北斗高精度定位技术在电动自行车行业中的多样应用以及其带来的诸多优势。北斗系统的背景…

Mysql事务详解配合案例一篇搞定 绝对简单通俗

目录 介绍 实操 自动提交事务 手动提交事务 张飞自减回滚 张飞关羽转账回滚 mysql事务隔离级别 读未提交 读已提交 可重复读 可串行化 介绍 MySQL的事务处理是数据库管理系统(DBMS)提供的一种机制&#xff0c;用于确保一系列的数据库操作能够作为一个完整的、不可分…

微软的这个按钮又双叒叕变了位置?有时候还不见了……

前言 小白最近打开Windows11系统的时间比较少&#xff0c;大部分时间都还是喜欢用MacBookPro码字。 之前小白写过一篇关于微软系统左下角的这个神奇按钮 Windows11更新之后&#xff0c;电脑左下角多出了一个奇怪的按钮&#xff08;点我跳转查看&#xff09; 没错&#xff0…

MCK主机加固:智能科技,构筑网络安全的铜墙铁壁

在数字化转型的浪潮中&#xff0c;企业服务器的安全已成为维护业务连续性和保护数据资产的关键。MCK主机加固产品&#xff0c;以其创新技术&#xff0c;为企业提供了一个全面、智能、高效的安全解决方案。 一、智能安全监测 MCK主机加固产品采用深度学习算法&#xff0c;能够…

20240611在飞凌OK3588-C核心板的Linux系统下打通UART0和UART3

20240611在飞凌OK3588-C核心板的Linux系统下打通UART0和UART3 2024/6/11 7:45 Z:\OK3588_Linux_fs\kernel\arch\arm64\boot\dts\rockchip\OK3588-C-common.dtsi &pinctrl { m2 { net_m2_rst_gpio: net_m2_rst_gpio { rockchip,pins <1 RK_PC6 RK_…

Redis实战篇4:发布博客与点赞

一、博客 关于发布博客这个功能&#xff0c;他就是mysql相关的数据库&#xff0c;不涉及到redis&#xff0c;但是我们可以来看一下其相关的表的功能来了解一下&#xff1a; 博客表&#xff1a; 与其对应的评论表&#xff1a; 关于其数据库的设计也应该好好的学习一下。 二…

RKNNToolkit2 推理数据输入问题

RKNNToolkit2 推理数据输入问题 ​ 以前在玩RKNN的时候&#xff0c;下载对应的模型时&#xff0c;由于众多大佬帮忙开源了自己准好的模型和写好的各种后处理&#xff0c;所以当时只要脚本能运行&#xff0c;就不去深究代码的内容和模型。由于最近任务的调整&#xff0c;也慢慢…

ssm职工健康素养数据管理系统设计与实现-计算机毕业设计源码45392

摘 要 信息化社会内需要与之针对性的信息获取途径&#xff0c;但是途径的扩展基本上为人们所努力的方向&#xff0c;由于站在的角度存在偏差&#xff0c;人们经常能够获得不同类型信息&#xff0c;这也是技术最为难以攻克的课题。针对职工健康素养数据管理系统等问题&#xff0…

【PowerDesigner】PDM生成REPORT

目录 &#x1f30a;1. PowerDesigner简介 &#x1f30d;1.1 常用模型文件 &#x1f30d;1.2 PowerDesigner使用环境 &#x1f30a;2. PDM生成REPORT &#x1f30a;3. 研究心得 &#x1f30a;1. PowerDesigner简介 &#x1f30d;1.1 常用模型文件 主要使用PowerDesigner的…

6、后端项目初始化

打开idea后&#xff0c; New Project &#xff0c;用Maven构建 Spring Boot 项目 点击Next后&#xff1a;先勾选两个基本的依赖&#xff0c;后面再手动添加其它需要的依赖 Spring Web: 表示是一个web应用程序 Lombok&#xff1a;写实体类的时候添加Data注解后就会自动加上g…

Windows 10 中添加 开机启动 自动运行的程序

Win R 输入 “shell:startup” &#xff0c;回车确定 把 应用的 快捷方式 复制到文件夹中。就会自动开机启动了 参照图&#xff1a;

pdf怎样在线修改大小?压缩pdf文件大小的步骤

现在pdf是提供内容预览常用的一种方式&#xff0c;有很多的信息都会用这种文件格式来存储&#xff0c;当pdf的内容比较多的时候&#xff0c;相对而言生成的文件也会比较大&#xff0c;在上传使用的时候会受到影响&#xff0c;那么有什么方法能够快速调整pdf文件大小呢&#xff…

Spark学习——不同模式下执行脚本

举个简单的例子&#xff1a;使用spark官方用例"取pi值" 一、local模式 进入spark目录执行后台命令&#xff1a; bin/spark-submit \ --class org.apache.spark.examples.SparkPi \ --master local[*] \ ./examples/jars/spark-examples_2.12-3.2.1.jar \ 10运行结…

opencv_核心操作

图像基本操作 访问和修改像素值 import numpy as np import cv2 img cv2.imread(c:/Users/HP/Downloads/basketball.png) h,w,c img.shape #图像大小 print(h,w,c)### 841 1494 3# 通过行和列坐标访问像素值 img[100,100]### 231 ### array([231, 140, 146], dtypeuint8)# …

STM32移植Easylogger输出

简介 EasyLogger 是一款超轻量级 、高性能的 C 日志库&#xff0c;非常适合对资源敏感的软件项目&#xff0c;例如&#xff1a;IoT 产品、可穿戴设备、智能家居等等。相比 log4c、zlog 这些知名的 C 日志库&#xff0c;EasyLogger 的功能更加简单&#xff0c;提供给用户的接口…

如何更改 Windows 默认下载位置?按照以下步骤操作

大家在使用电脑的过程中常常需要下载一些文件等资源&#xff0c;但是一般没有修改时电脑下载资源之后都默认存放在了 C 盘&#xff0c;这也导致 C 盘的空间越来越小。我们可以提前修改电脑的默认下载位置&#xff0c;下面一起来看一看默认下载位置怎么更改。 修改浏览器默认下…

英伟达SSD目标检测代码解析

一、官方原代码 #!/usr/bin/env python3 # # Copyright (c) 2020, NVIDIA CORPORATION. All rights reserved. # # Permission is hereby granted, free of charge, to any person obtaining a # copy of this software and associated documentation files (the "Softwa…

利用 AI 深度学习,实现化合物配比最优化解决方案

为什么需要化合物配比的优化&#xff1f; 在化合物制造行业中&#xff0c;化合物的配比是产品质量控制的关键环节。 化合物制造流程 目前&#xff0c;这一过程高度依赖于材料专家和工程技术人员的经验&#xff0c;通过反复试验来验证产品性能&#xff0c;确保其满足市场和客户的…

Linux内核编程(一)内核模块基础

本文目录 前述&#xff1a;内核框架图一、Linux 内核模块概述二、Linux 模块的优点三、知识点1. GPL开源协议2. 查看已安装的模块文件&#xff1a;lsmod 四、常用API1. 入口函数2. 出口函数3. 声明驱动模型出/入口函数4. printk内核输出函数 五、内核源码头文件六、编写内核模块…