Автор Тема: Клетка/Адрес  (Прочетена 1194 пъти)

Apache

  • Напреднали
  • *****
  • Публикации: 106
    • Профил
Клетка/Адрес
« -: Feb 17, 2006, 13:59 »
Здравейте, някой може ли да ми даде определение за Адрес и Клетка в Паметта ?
Знам че паметта е съставена от клетки, но как точно, каква е големината на всяка клетка, всяка клетка ли си има адрес или няколко клетки имат общ адрес, изобщо ако някой може да ми даде определение за тези две понятия и малко пояснение каква роля играят в паметта, ще му бъда благодарен. Мерси предварително.
Активен

ivak

  • Напреднали
  • *****
  • Публикации: 156
    • Профил
Клетка/Адрес
« Отговор #1 -: Feb 17, 2006, 17:30 »
Клетка е най-малкото възможно количество информация в компютъра, което може да бъде идентифицирано (т.е. адресирано).

Адресът, от своя страна, е информацията, която идентифицира еднозначно дадена клетка.

Както виждаш, двете понятия са свързани: всяка клетка си има адрес, чрез който да я търсим, и на всеки адрес отговаря точно една клетка. На практика двата термина са синоними.

Клетките в паметта на компютъра са подредени последователно, а адресите им започват от 0. Адресът на всяка следваща клетка е с единица по-голям от предишния.

Размерът на клетката зависи от архитектурата на компютъра, но в повечето съвременни машини клетките са съставени от по 8 бита. Поради тази причина термините клетка и байт също са синоними.

Както казах вече, всяка клетка има собствен адрес, но също така е възможно няколко клетки да имат общ адрес. Това се получава, когато няколко последователни клетки заедно съдържат информация, която се интерпретира като едно цяло.

За да схванеш по-ясно тази концепция, ще ти дам следния пример:

В пределите на една клетка можем да запишем число между 0 и 255. Така е, защото 8-те бита могат да имат точно 256 различни състояния (256 е 2 на степен 8-ма).

16 бита, обаче, могат да поберат значително по-големи числа - от 0 до 65535. За да се възползваме от това преимущество, просто обединяваме две последователни клетки. По същия начин можем да обединим 4, 8 или повече последователни клетки, разширявайки значително диапазона на представяната информация.

Обичайно е така направените обединения да се обозначават с адреса на първата клетка от тях. Разбира се, за да извлечем информацията, трябва да знаем също и колко клетки участват в обединението, но за това обикновено се грижат компилаторите. Например, когато в езика С декларираме променлива:

long a

компилаторът автоматично заделя 4 последователни клетки и запомня адреса на първата от тях. Всеки път, когато се обърнем към въпросната променлива, компютърът ползва именнo този адрес, за да достигне до точно тези 4 клетки.
Активен

Cлoжнитe пpoблeми имaт пpocти и лecни зa paзбиpaнe гpeшни oтгoвopи.

Apache

  • Напреднали
  • *****
  • Публикации: 106
    • Профил
Клетка/Адрес
« Отговор #2 -: Feb 17, 2006, 20:52 »
Цитат (ivak @ Фев. 17 2006,18:30)
Клетка е най-малкото възможно количество информация в компютъра, което може да бъде идентифицирано (т.е. адресирано).

Адресът, от своя страна, е информацията, която идентифицира еднозначно дадена клетка.

Както виждаш, двете понятия са свързани: всяка клетка си има адрес, чрез който да я търсим, и на всеки адрес отговаря точно една клетка. На практика двата термина са синоними.

Клетките в паметта на компютъра са подредени последователно, а адресите им започват от 0. Адресът на всяка следваща клетка е с единица по-голям от предишния.

Размерът на клетката зависи от архитектурата на компютъра, но в повечето съвременни машини клетките са съставени от по 8 бита. Поради тази причина термините клетка и байт също са синоними.

Както казах вече, всяка клетка има собствен адрес, но също така е възможно няколко клетки да имат общ адрес. Това се получава, когато няколко последователни клетки заедно съдържат информация, която се интерпретира като едно цяло.

За да схванеш по-ясно тази концепция, ще ти дам следния пример:

В пределите на една клетка можем да запишем число между 0 и 255. Така е, защото 8-те бита могат да имат точно 256 различни състояния (256 е 2 на степен 8-ма).

16 бита, обаче, могат да поберат значително по-големи числа - от 0 до 65535. За да се възползваме от това преимущество, просто обединяваме две последователни клетки. По същия начин можем да обединим 4, 8 или повече последователни клетки, разширявайки значително диапазона на представяната информация.

Обичайно е така направените обединения да се обозначават с адреса на първата клетка от тях. Разбира се, за да извлечем информацията, трябва да знаем също и колко клетки участват в обединението, но за това обикновено се грижат компилаторите. Например, когато в езика С декларираме променлива:

long a

компилаторът автоматично заделя 4 последователни клетки и запомня адреса на първата от тях. Всеки път, когато се обърнем към въпросната променлива, компютърът ползва именнo този адрес, за да достигне до точно тези 4 клетки.

Да, мерси, точно такава представа имах и аз за нещата.
Само че на моята машина променлива тип integer, заема 4 байта ( съответно 4 клетки ) от паметта, за това предполагам че long ще заема осем. '<img'>
Мерси много за изчерпателния отговор, наистина ми се изясниха нещата. Лек ден. '<img'>
Активен

ivak

  • Напреднали
  • *****
  • Публикации: 156
    • Профил
Клетка/Адрес
« Отговор #3 -: Feb 19, 2006, 18:58 »
Цитат (Apache @ Фев. 17 2006,20:52)
Само че на моята машина променлива тип integer, заема 4 байта...

Ако става дума за езика С, променливите от тип int имат размера на процесорните регистри. В твоя случай - четири байта или 32 бита. Ако обаче минеш на 64 битов процесор, int ще стане осем байта. Тъй като това е доста объркващо, езикът поддържа машинонезависими типове. Те са следните:

char и unsigned char - 8 бита;
short и unsigned short - 16 бита;
long и unsigned long - 32 бита;
long long и unsigned long long - 64 бита.

Всички изброени типове са целочислени и имат посочения размер на всеки компютър.
Активен

Cлoжнитe пpoблeми имaт пpocти и лecни зa paзбиpaнe гpeшни oтгoвopи.