内存地址编号计算与存储芯片计算
问题:按字节内存编址,从A1000H到CBFFFH 的区域存储容量是多少?,以16K*4b存储芯片构成需要多少个芯片?
第一个问题解决思维:
第一步:CBFFF H 把H去掉,这个只是表示前面的数是16进制的符号,可以直接无视
然后,十六进制里面,F=15。从右边的F开始+1,为什么要+1呢?估计是数据从0开始计算,百度的高手解释是:注意一下,这个+1是什么意思?因为只是提取中间的间隔数据,实际得出的结果应该是+1得到的
右边+1之后,F就变成0,向前一位继续加1,按照十进制的常识,满10进1,这里就是满16进1
那么所有F全部进1之后,B也得加1,对应的计算结果是C。最后,整个地址就变成了CC000H
第二步:CC000减去A1000的计算。这个没啥,直接用16进制去计算
CC000
–
A1000
_____________________
2B000 C对应十进制的12,A对应10进制的10,那么最后结果就是这样
第三步:将上面的结果化成特殊的二进制与十六进制的十进制中转结果
首先来数一下,2B000里面,2的后面有多少个数字,每一个任意数字,代表一个16.就是说像下面这样来表示 B代表11,也用下面的方法表示,然后全部结果相加
2*16*16*16*16 + 11*16*16*16 + 0*16*16 + 0*16 +0 得到这种表示方法之后,还得把这个除以1024!
为什么要除以1024呢,因为内存里面的地址是按B,即是位来算的。上面的结果是位的代表。如果要计算成KB的,那就必须除以1024
那么1024这个十进制是多少个16的倍数呢? 是64*16 64又是多少个16的倍数呢? 是4*16*16
现在这个时候就可以把第三步的中转结果直接除以4*16*16了!
计算过程如下:(除法可以用分子分母结构表示)
2*16*16*16*16 + 11*16*16*16 + 0*16*16 + 0*16 + 0 —————————————————————————————————————————————————————————————————————————4*16*16 + 4*16*16 + 4*16*16 + 4*16*16 + 4*16*16 0除以任何数都为0,非0的,同时上下删除同样多的16不去计算
得出下面这样的情况:
2*16*16 + 11*16 + 0 + 0 + 0 —————————————————————————————————————— 4 + 4 + 0 + 0 + 0 16都不用计算了,非常省事,剩下来把下面的4,随便找一个上面的16除就OK
得出来的最后结果表示为: 2*16*4 + 11*4 再简化一下就是 8*16 + 44 =172(K)区域存储容量是172K
第二个问题的解决思维:
上面的计算结果是KB为单位的,那么必须把16K*4b的计算结果也化成KB单位,换算思维如下:
存储芯片容量最小单位是Bit,8个Bit 为1KB 那么16*4=64Bit再除以8Bit得到结果8K。就是说16K*4Bit的存储芯片能装8K的数据的意思了。
那么172K数据除以一个能装8K数据的芯片,就知道了需要用21.5个芯片才能装满,现实中当然不可能把芯片砍掉一半去装。所以需要用到22个芯片!!