历史上的今天
返回首页

历史上的今天

今天是:2025年05月06日(星期二)

正在发生

2018年05月06日 | stm32数据存储

2018-05-06 来源:eefocus

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

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

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;  


变量名地址
f0x200000000xBDCCCCCD
p0x200000040x20000000
i0x200000080xAABBCCDD
p20x2000000B0x20000008

看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


推荐阅读

史海拾趣

CANOPUS公司的发展小趣事

CANOPUS的产品逐渐赢得了全球音乐爱好者的喜爱。为了更好地满足市场需求,公司开始积极拓展海外市场。通过与当地经销商合作、参加国际展览等方式,CANOPUS的产品逐渐打入国际市场,并在全球范围内建立了良好的声誉。

Advanced Technology Corp公司的发展小趣事

ATC公司深知质量管理对于企业发展的重要性。因此,公司建立了严格的质量管理体系,从原材料的采购到产品的生产、检测、包装等环节都进行严格控制。此外,ATC公司还注重员工的培训和教育,提升员工的质量意识和技能水平。这些措施确保了ATC公司产品的稳定性和可靠性,赢得了客户的信任和好评。

Evans Capacitor Company公司的发展小趣事

随着环保意识的日益提高,ECC积极响应国家号召,致力于绿色环保产品的研发和生产。公司投入大量资金研发环保型电容器,采用环保材料和工艺,减少生产过程中的污染排放。此外,ECC还积极参与公益事业,捐款支持环保组织和慈善机构。

ABB公司的发展小趣事

在国内市场取得成功后,ECC开始将目光投向国际市场。公司积极参加国际展会,与海外客户建立联系。同时,ECC还在海外设立了研发中心和生产基地,以便更好地了解当地市场需求并提供定制化服务。通过不懈的努力,ECC的产品成功打入国际市场,实现了全球化布局。

Excel Cell Electronic Co Ltd公司的发展小趣事

为了拓展海外市场,ECE公司制定了国际化战略。公司积极参与国际电子展会,与国际知名企业建立合作关系,不断提升品牌知名度和国际影响力。同时,ECE公司在海外设立分支机构,加强与国际市场的联系和沟通,进一步拓展市场份额。这些努力使ECE公司的产品成功进入欧洲、北美等发达地区市场,实现了全球化布局。

EOZ Secme公司的发展小趣事

EOZ Secme公司自创立之初,就致力于电子安全技术的研发。在2010年代初,随着物联网技术的兴起,EOZ Secme敏锐地捕捉到这一机遇,投入大量资源进行物联网安全技术的研发。经过数年的努力,公司成功开发出了一系列具有自主知识产权的物联网安全解决方案,并在市场上获得了广泛应用。这些技术的创新不仅提高了EOZ Secme的市场竞争力,也奠定了其在电子安全领域的领先地位。

问答坊 | AI 解惑

步进电机原理

本帖最后由 paulhyde 于 2014-9-15 03:11 编辑 有需要的彼此分享啊!!!    …

查看全部问答>

多路模拟选择开关相关资料

本帖最后由 paulhyde 于 2014-9-15 08:57 编辑 多路模拟选择开关相关资料,凌阳公司的,希望对大家有帮助。  …

查看全部问答>

请教电源一个职业规划问题--迷途之中的一只小书虫

请教 一个职业规划问题:     \"闻道有先后,术业有专攻\",书虫也是慕名而来.目的只有一个,请斑竹赐教.     目前我在公司负责LED的驱动的电源一块,听别人说的,开关电源是头头,于是,苦命研究此类电源,不想各类此电源还真纷繁复 ...…

查看全部问答>

关于学习STM32F103VB

一直在用51,最近上网买器件顺便买了一个STM32F103VB的迷你开发板和一个JLink,不知道这个东西从何学起,哪个老师能指点一下这个芯片怎么从零开始学习?(用Keil MDK) 多谢回复,谢谢!…

查看全部问答>

二手开发板,IC呆料免费交易平台www.dz-dailiao.cn,www.电子呆料.cn

二手开发板,IC呆料免费交易平台www.dz-dailiao.cn,www.电子呆料.cn…

查看全部问答>

快捷方式为什么会改了图标呢

快捷方式的运用:如果要在CE平台的桌面上显示一个程序的快捷方式,实现步骤为:   1、创建一个快捷方式。在开发机上用记事本一类的文字编辑软件写入字符格式为:长度#路径。其中长度为路径的字符个数。   例如“16#\\windows\\abc.exe”,注 ...…

查看全部问答>

问一个MAX16823的输入电流和效率的问题。(MAXIM公司的请进)

在LED驱动里选择了MAX16823这个芯片。不过我在其供电电流和效率上遇到了一些问题。我把从官网上下载的PDF看了好几遍,又在官网上的搜索页里看了,都没发现提及MAX16823的效率以及输入电流与输出电流的信息。之所以特别提出来问,是因为,这个MAX168 ...…

查看全部问答>

lm3s8962上的RT-Thread连载——简单的HTTP服务器

本来是打算从内核开始写起,到网络,文件系统,GUI等一系列连载,发现自己写东西的速度太慢,按这样的速度也不知道什么时候才能写到网络,而LM3S8962的精华部分在于网络,所以干脆先从网络部分的内容开始,后面间隔的插入内核等部分的内容。先预告 ...…

查看全部问答>

意法半导体(ST)为STR91x的用户提供免费的TCP/IP协议栈

STMicroelectronics Delivers Free TCP/IP Stack for STR91x DesignersLow-footprint, vendor-supported stack accelerates Ethernet-based development using networ ...…

查看全部问答>

请教关于MSP430F5438的问题

最近买了一块芯片为MSP430F5438的LSD-STBD-A001-A2 ( 430F5实验平台 )。本人不会英语看不懂资料,请教各位老师,MSP430F5438与MSP430F169、MSP430F4XX、MSP430F14X等芯片相比,各项性能功能都超越了吗?先谢谢各位了!…

查看全部问答>