2015-11-06 142 views
0

我有一個關於計算的存儲器地址的問題:存儲器範圍計算

我給定3個存儲器塊:

- 1x 1KByte (IC1) - 2^10 Byte 
- 2x 4KByte (IC2 + IC3) 2^12 Byte 

到目前爲止我計算這些存儲器地址:

IC1:

0000 0000 0000 0000 (Starting adress) 
0000 0011 1111 1111 (Ending adress, I got this from inverting the last 10 digits) 

IC2:

0000 0100 0000 0000 (Starting adress)- Last ending adress +1 
0000 1011 1111 1111 (Ending adress, I got this from inverting the last 12 digits) 

然而,在IC3必須有一些方法來得到一個進位到我的第一個0000塊,因爲我跑出來的時候只使用3最後3個十六進制數字空間:

IC2:

0000 1100 0000 0000 (Starting adress)- Last ending adress +1 

現在的結局地址是什麼?如果我再次反轉最後的12位數字,我會得到一個已經在使用的十六進制地址。很明顯,下一個十六進制數字必須增加到1,但我找不到一個規則來做到這一點。

有什麼建議嗎?

回答

1

我不知道爲什麼你正在使用該位翻轉,它看起來像它應該是一個非常有效的實現,如果它的工作原理,但它似乎沒有:

你IC2塊起始地址(以十六進制表示)是400(從內存開始是1K,目前爲止都是好的),但是當它是13FF(1k + 4k = 5k)時,十六進制的結束地址是BFF,即0001 0011 1111 1111

是否有一個原因,你不能使用加法而不是位翻轉來計算這些地址?

+0

謝謝,應該是明顯的BFF是錯的 – Sossenbinder