2013-01-01 13 views
5

Mam sprawowaniu że nie mogę go rozwiązać, mam zasięg 3 pamięci:Jak obliczyć wielkość pamięci podając zakres adresów?

 First @  Last @ 

zakres1: FD00 0000 do FDFF FFFF

zakres2: D000 0000 do DFFF FFFF

zakres3: FA00 0000 do FBFF FFFF

pytanie brzmi: podaj rozmiar pamięci dla każdego zakresu (Mega byte)?

Wiem, że powinienem obliczyć rozmiar zakresu = ostatni adres - pierwszy adres , więc wynik dla pierwszego zakresu to: 00FF FFFF. Czy to prawda? Więc co powinienem zrobić? Szukałem w internecie nie znalazłem przykład

Proszę o pomoc

Odpowiedz

1

W przykładzie dla zakresu 1, masz rację. Jest to wielkość pamięci, podana w szesnastkowej, w bajtach.

Możesz uzyskać najlepszy wgląd poprzez przekształcenie FFFF 00FF na liczbę dziesiętną, a następnie konwersję tej liczby bajtów na megabajty.

Aby przekonwertować z bajty do megabajtów użyć relacji

1 MB = 1 Megabyte = 1024 * 1 KB = 1,048,576 bytes. 

Istnieje mnóstwo Hex Online, aby po przecinku konwerterów. Kalkulator wbudowany w system Windows może również wykonać konwersję.

W przypadku innych zakresów należy ponownie odjąć w celu określenia rozmiaru zakresu, a następnie zastosować powyższe kroki, np.

FBFF FFFF 
- 
FA00 0000 
--------- 
01FF FFFF 

Po przejściu tych kroków, aby lepiej zrozumieć, co się dzieje, następujący związek będzie można odpowiedzieć na takie pytania szybciej:

0010 0000 = 1,048,576 

Więc 1MB jest taka sama jak 0010 0000 (czasami nazywane 0X100000).

0
range1: FD00 0000 to FDFF FFFF: 
    FD FF FFFF 
- FD 00 0000 
------------ 
    FF FFFF = 1MB (0x100 0000) 

range2 : D000 0000 to DFFF FFFF = 256MB (0x1000 0000) 

range3 : FA00 0000 to FBFF FFFF = 32MB (0x200 0000) 
2

Niestety, aby odpowiedzieć na pytanie innym pytaniem/s ...

nie jest liczba adresów dostępnych w podanym zakresie włącznie z tymi ogranicznikami zasięgu aswell? np. (w dziesiętnym, aby zilustrować mój punkt) z adresem początkowym 5, i adresem końcowym 10. Tylko odejmowanie, tj. adres końcowy minus adres początkowy (10-5), otrzymujemy zakres 5. Ale w rzeczywistości jest sześć unikalnych adresów w IE Zakres 5,6,7,8,9,10 (więc należy dodać 1 do wyniku odejmowania w oryginalne pytanie Julie?)

również pamięć rozmiar adres kontra rzeczywisty rozmiar pamięci . Czy mówimy o liczbie poszczególnych lokalizacji pamięci lub o wielkości pamięci dostępnej do przechowywania danych (co powinno uwzględniać rozmiar każdej lokalizacji)?

Jeśli chodzi o lokalizację tylko pamięci, to prawie skończyliśmy (myślę, że jest to nazywane rozmiarem adresu pamięci). Po prostu trzeba opracować część MB pytania (dojdę do tego problemu na końcu)

Jeśli jest to dostępne miejsce, powinno to obejmować rozmiar każdej adresowalnej części pamięci, np. każda lokalizacja adresu zawiera fragment danych o nieznanym rozmiarze. Powiedz, czy jest to 1 bajt (1B) danych na lokalizację w pamięci niż mój przykład powyżej oznacza, że ​​rozmiar pamięci to: 6 (lokalizacje pamięci) pomnożone przez 1 Bajt (objętość każdej lokalizacji pamięci) dla łącznej wielkości pamięci wynoszącej 6B

Więc na podstawie mojej logiki, na zadane pytanie oryginalnego dla zakresu 1 powinny być 01000000hex (zakres1 = FDFF FFFF-FD00 0000 + 1 = 01000000h).

Jeśli chodzi o rozmiar pamięci tego zakresu, to jest to miejsce, w którym bardzo się mylę ... Jest to określona liczba lokalizacji w pamięci, tj. 1000000 godzin, o pewnym nieokreślonym rozmiarze dla każdej lokalizacji. Dlaczego więc wyrażać je w MB lub GB. Jeśli znasz rozmiar każdej lokalizacji w pamięci (i liczbę lokalizacji według wielkości każdej lokalizacji, to masz rozmiar pamięci dla tego zakresu i możesz wyrazić go w postaci liczbowej:

I podczas gdy jesteśmy w to, gdzie naprawdę się mylę, to użycie MB, GB itd. Często jest cytowane, ponieważ każdy prefiks równa się wielokrotności 1024, np. 1KB = 1024Bytes, 1MB = 1024kB itd., ale preferowana konwencja IEC jest oparta na standardzie ISO (według mojego googlowania w tej chwili), który mówi: Kilo (kB) = 1000, Mega (MB) = 1000000 itd.

Odkładając na bok nieznany rozmiar każdej lokalizacji i przeliczając 1000000 godzin na dziesiętny, tj. 16 777 216, odpowiedź brzmi: :

  • 16 MB (16777216/1024/1024 = 16) I podejrzenie to odpowiedź nauczyciela jest PO
  • 16.777216MB (zgodnie z normami ISO)
  • 16 mebibytes (zgodnie ze wspólnym IEC/ISO - IEC 80000-13)

Btw, googlowania dopiero wykształcony mnie (może być rozumiane niedawno i częściowo) na kibibytes i mebibytes ... jeśli jesteś zainteresowany, sprawdź https://en.wikipedia.org/wiki/Kilobyte

1

równanie jest

second_add - first_add + 1 

przykład

fdff ffff - fd00 0000 + 1 = 0100 0000 = 2^24 = 2^4 * 2^20 = 16Mbyte [2^20 byte = 1 Mbyte] 
-1

myślę wzór

wielkość = koniec - rozpocząć

zawsze dobre użyć (bez różnicy inne rozmiary, np. talia do spodni)

rozmiar pamięci czyni go trudniejszym ze względu na HEX i DEC, w którym dziesiętny jest łatwy do odczytania przez człowieka, a często używany jest B (bajty).

aby rzeczy proste, jeśli masz zainstalowany bc, może chcesz spróbować

echo 'ibase=16;yourendhex-yourbeginhex' | bc 

w przypadku

echo 'ibase=16;FDFFFFFF-FD000000' | bc 
echo 'ibase=16;DFFFFFFF-D0000000' | bc 
echo 'ibase=16;FBFFFFFF-FA000000' | bc 
16777215 #16MB 
268435455 #268MB 
33554431 #34MB 
Powiązane problemy