当前位置:首页 > 单片机 > 单片机
[导读] 大端模式:数据高字节保存在内存低地址,数据低字节保存在内存高地址;小端模式:数据高字节保存在内存高地址,数据低字节保存在内存低地址;stm32默认小端存储,如下图:volatile float f = -0.1; vol

大端模式:数据高字节保存在内存低地址,数据低字节保存在内存高地址;

小端模式:数据高字节保存在内存高地址,数据低字节保存在内存低地址;

stm32默认小端存储,如下图:

volatile float f = -0.1;

volatile float *p = &f;

volatile uint32_t i = 0xaabbccdd;

volatile uint32_t *p2 = &i;



volatile int32_t i2 = -5;

volatile int32_t *p3 = &i2;


变量名地址值f0x200000000xBDCCCCCDp0x200000040x20000000i0x200000080xAABBCCDDp20x2000000B0x20000008

看0x20000000地址存储的值,0xBDCCCCCD的存储顺序为CD CC CC BD,变量i的值的地址0x20000008存DD,之后一次存放CC BB AA。



计算机编码概念:参http://share.onlinesjtu.com/mod/tab/view.php?id=173点击打开链接

原码:符号位为0表示正数,为1表示负数,数值部分用二进制数的绝对值表示的方法称为原码表示法,通常用[X]原表示X的原码。

反码:正数的反码与原码相同,负数的反码是符号位不变,数值位逐位取反。

补码:把某数X加上模数K,称为以K为模的X的补码。[X]补=K+X(计算机中的加法器是以2n为模的有模器件,单字节有符号数据的模式2^8,即256)。

求补码的方法:


  1. 正数的补码的最高位为符号“0”,数值部分为该数本身;负数的补码的最高位为符号“1”,数值部分为用模减去该数的绝对值。

  2. 正数的补码与其原码相同;负数的补码是符号位不变,数值位逐位取反(即求其反码),然后在最低位加1。


移码:通常来说在计算机科学中,移码就是将补码的符号位取反,如下:

-120D = -1111000B(真值)原码:11111000反码:10000111补码:10001000 移码:00001000这样的移码也可以叫做偏移值为128的移码,也是标准移码(偏移值为2k-1,k为数据位数),即10000000B+(-1111000B)=10000000B+(10001000B)=00001000B。这样移码就可以表示为原数的补码加上偏移值。在IEEE 754浮点数表示中移码是非标准的,它的偏移值为2k-1-1,也就是说对于单精度浮点数的偏移值为127(双精度为1023)。参:https://zh.wikipedia.org/wiki/%E7%A7%BB%E7%A0%81维基百科


STM32的整型数据以补码形式存储,如上图:-5在内存中的存储值为0xFFFFFFFB,

-5: 原码:0x80000005 1000,0000,0000,0000,0000,0000,0000,0101(B)

反码:0xFFFFFFFA 1111,1111,1111,1111,1111,1111,1111,1010(B)

补码:0xFFFFFFFB 1111,1111,1111,1111,1111,1111,1111,1011(B)


浮点型数据存储

STM32采用IEEE二进制浮点数算术标准(IEEE 754)参:https://zh.wikipedia.org/wiki/IEEE_754

IEEE标准从逻辑上采用一个三元组{S, E, M}来表示一个数N,它规定基数为2,符号位S用0和1分别表示正和负,尾数M用原码表示,阶码E用移码表示。根据浮点数的规格化方法,尾数域的最高有效位总是1,由此,该标准约定这一位不予存储,而是认为隐藏在小数点的左边,因此,尾数域所表示的值是1.M(实际存储的是M),这样可使尾数的表示范围比实际存储多一位。为了表示指数的正负,阶码E通常采用移码方式来表示,将数据的指数e 加上一个固定的偏移量后作为该数的阶码,这样做既可避免出现正负指数,又可保持数据的原有大小顺序,便于进行比较操作。(不使用标准移码原因,猜测是使用标准的偏移量2^(k-1)得到的最小数是1,最大数变成了0,数域为[-(2^(k-1)-1),2^(k-1)])参:http://share.onlinesjtu.com/mod/tab/view.php?id=176

-0.1 -> -0.00011001100110011001101 -> -1.1001100110011001101*2^(-4)(注意:是-0.00011001100110011001101,而不是-0.00011001100110011001100,因为不能完全表示为2进制,进一法表示,即-0.0001100110011001100110011....进一表示为-0.00011001100110011001101)

S:1;

E:127+(-4)=123 -> 0111,1011(B)

M:1.M=1.1001100110011001101-> M为1001100110011001101

所以内存上存储为:1,0111,1011,1001,1001,1001,1001,1001,101


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

传统数据库架构已无法应对设备数据的高并发写入、低价值密度与长周期存储需求。M2M数据湖架构通过分布式存储、智能索引与弹性查询引擎的深度整合,构建起支撑万亿级设备数据管理的技术底座。本文从架构设计、核心技术、工程实践及典型...

关键字: M2M 数据存储

上海2025年8月13日 /美通社/ -- 8月12日,富士胶片(中国)投资有限公司(以下简称"富士胶片(中国)")在北京举行FUJIFILM LTO Ultrium 10(以下简称"LTO...

关键字: 富士 数据流 数据存储 AI

德国慕尼黑 2025年4月30日 /美通社/ -- 第四届创新数据基础设施论坛(IDI Forum)在德国慕尼黑举行。华为公司副总裁、数据存储产品线总裁周跃峰发表题为"数据觉醒,AI-Ready数据基础设施加...

关键字: 华为 智能化 AI 数据存储

当下,大数据已成为推动各行业创新发展的核心驱动力。从互联网电商的精准营销到医疗健康领域的疾病预测,从金融行业的风险评估到城市交通的智能调度,大数据的身影无处不在。然而,大数据的爆炸式增长也带来了前所未有的挑战,其中高效的...

关键字: 数据采集 数据存储

在现代电子设备中,电可擦可编程只读存储器(EEPROM)凭借其独特的存储特性,被广泛应用于各类需要非易失性数据存储的场景。从智能电表、工业控制系统到消费电子产品,EEPROM 承担着存储关键配置信息、校准数据以及用户个性...

关键字: 只读存储器 数据存储 EEPROM

北京2025年1月23日 /美通社/ -- 在全球数字化转型的浪潮中,数据已成为驱动社会进步和创新的核心动力。随着互联网、人工智能、大数据等技术的飞速发展,全球数据量呈现爆炸式增长。企业数据中心、云计算平台以及个人用户的...

关键字: SATA SSD 数据存储 信息存储

上海2025年1月6日 /美通社/ -- 随着国家数据局进一步推动数据要素的发展,企业数字化转型、数字化竞争力将迎来新的挑战和机遇。其中,随着新质生产力不断培育扩大,企业需要加快提升创新能力,而传统产业更要加快升级。在各...

关键字: 数据中心 RS 数据存储 电脑

随着全球互联程度日益加深,信息安全与隐私保护已成为监管框架的核心议题。欧盟的无线电设备指令(European Union’s Radio Equipment Directive, RED),尤其是其中的第3.3条款,是确...

关键字: 数据存储 无线电 闪存

北京2024年11月21日 /美通社/ -- 随着智能时代的全面到来,数据量呈现出爆炸性增长,这对存储系统提出了前所未有的高标准要求。从早期的"百模大战"演进至"千模大战",现已迈...

关键字: 数据存储 模型 人工智能 存储系统
关闭