如何计算地址范围(大小)

问题描述

今天在学习野火STM32HAL库的过程中,看到了存储器区域功能划分这个章节。在这里插入图片描述
他的0x00000000 - 0x1FFFFFFF为什么是512MB。本人曾经参加了一次软考,考的嵌入式系统设计工程师,当时也没准备就去了,结果就是没过…回想当时也有这个题,如何计算地址范围。今天咨询了下同事,经过一顿友好的交流(鄙视~)大概明白了。

解决

如第一个,0x0000 0000 - 0x1FFF FFFF,总共有29位(1FFF是13BIT, FFFF16BIT,相加是29),那么大小就是2^29次方。
那2的29次方怎么计算呢,当然可以用计算器,但是,如果考试的话怎么能带计算器呢?嘿嘿,经过我的求教,我的同时说作为一个程序员这都不知道,你可以拆解啊。例如

  • 2^10=1024(1K)
  • 2^20=1,048,576(1M)
  • 2^30=1,073,741,824(1G)

综上可得,2^29 = (2^30)/2 =(1G/2)=512M么?如果你想用别的方法也可以229=229=(210)3/2=(1024)^3/2,当然这种方法不推荐,也基本用不上,考试也不会考

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值