Лекция "Представление информации в компьютере. Структура внутренней памяти."

Основные понятия: бит, байт, дискретность, отрицательные числа, дополнительный код, двоичные и шестнадцатеричные числа, целые и вещественные числа, мантисса, машинный порядок, нормализованное представление, машинное слово, адресуемость.

Биты и байты

Написание программ требует знаний организации всей системы компьютера. В основе компьютера лежат понятия бита и байта. Они являются тем средством, благодаря которым в компьютерной памяти представлены данные и команды.

Для выполнения программ компьютер временно записывает программу и данные в основную память. Компьютер имеет также ряд pегистров, которые он использует для временных вычислений.

Минимальной единицей информации в компьютере является бит.

Бит – ячейка памяти, хранящая один двоичный знак. Битовая структура памяти определяет первое свойство памяти – дискретность.

Бит может быть выключен, так что его значение есть нуль, или включен, тогда его значение равно единице. Единственный бит не может представить много информации в отличие от группы битов.

Байт - восемь расположенных подряд битов памяти.

Во внутренней памяти компьютера все байты пронумерованы. Нумерация начинается с нуля. Порядковый номер называется его адресом. В компьютере адреса обозначаются двоичным кодом. Используется также шестнадцатеричная форма обозначения адреса.

Двоичные числа

Так как компьютер может различить только нулевое и единичное состояние бита, то он работает системе исчисления с базой 2 или в двоичной системе. Фактически бит унаследовал свое название от английского "BInary digiT" (двоичная цифра).

Сочетанием двоичных цифр (битов) можно представить любое значение. Значение двоичного числа определяется относительной позицией каждого бита и наличием единичных битов. Ниже показано восьмибитовое число, содержащее все единичные биты:

 Позиционные веса  128  64  32  16  8  4  2  1
 Включенные биты  1  1  1  1  1  1  1  1

Самый правый бит имеет весовое значение 1, следующая цифра влево - 2, следующая - 4 и т.д. Общая сумма для восьми единичных битов в данном случае составит 1 + 2 + 4 + ... + 128, или 255 (2 в восьмой степени - 1).
Для двоичного числа 01000001 единичные биты представляют значения 1 и 64, т.е. 65. Но 01000001 представляет также букву A! Действительно, здесь момент, который необходимо четко уяснить. Биты 01000001 могут представлять как число 65, так и букву A.

Двоичное число не ограничено только восемью битами. Если процессор использует 16-битовую архитектуру, он автоматически оперирует с 16-битовыми числами (2 в степени 16 минус 1 дает значение 65535), а для 32 бит - 4294967295 (2 в степени 32 минус 1) и так далее.

Двоичное сложение

Микрокомпьютер выполняет арифметические действия только в двоичном формате.

Пример:

0 + 0 = 0
1 + 0 = 1
1 + 1 = 10
1 + 1 + 1 = 11

Обратите внимание на перенос единичного бита в последних двух операциях. Теперь, давайте сложим 01000001 и 00101010.(число 65 и число 42):

 Двоичные  Десятичные
 01000001  65
 00101010  42
 01101011  107

Проверьте, что двоичная сумма 01101011 действительно равна 107. Рассмотрим другой пример:

 Двоичные  Десятичные
 00111100  60
 00110101  53
 01110001  113

Представление целых чисел

Множество целых чисел, представимых в памяти ЭВМ, ограничено. Диапазон значений зависит от размера ячеек памяти, используемых для их хранения. В k-разрядной ячейке может храниться 2k различных значений целых чисел.

Чтобы получить внутреннее представление целого положительного числа N, хранящегося в k-разрядном машинном слове, необходимо:

1) перевести число N в двоичную систему счисления;
2) полученный результат дополнить слева незначащими нулями до k разрядов

Отрицательные числа

Для записи внутреннего представления целого отрицательного числа (-N) необходимо:

1) получить внутреннее представление положительного числа N;
2) получить обратный код этого числа заменой 0 на 1 и 1на 0;
3) к полученному числу прибавить 1.

Данная форма представления целого отрицательного числа называется дополнительным кодом. Использование дополнительного кода позволяет заменить операцию вычитания на операцию сложения уменьшаемого числа с дополнительным кодом вычитаемого.

Двоичные разряды в ячейке памяти нумеруются от 0 до k справа налево. Старший, k-й разряд во внутреннем представлении любого положительного числа равен нулю, отрицательного числа – единице. Поэтому этот разряд называется знаковым разрядом.

Для представления отрицательного двоичного числа необходимо инвертировать все биты и прибавить 1. Рассмотрим пример:
 Число 65  01000001
 Инверсия  10111110
 Плюс 1  10111111  (равно -65)

Сумма +65 и -65 должна составить ноль:
 01000001  (+65)
 10111111  (-65)
 (1)00000000  0

Все восемь бит имеют нулевое значение. Перенос единичного бита влево потерян. Однако, если был перенос в знаковый разряд и из разрядной сетки, то результат является корректным.

Двоичное вычитание выполняется просто: инвертируется знак вычитаемого и складываются два числа. Вычтем, например, 42 из 65. Двоичное представление для 42 есть 00101010, и его двоичное дополнение: - 11010110:

 65  01000001
 +(-42)  11010110
 23  (i)00010111

Результат 23 является корректным. В рассмотренном примере произошел перенос в знаковый разряд и из разрядной сетки.

Если справедливость двоичного дополнения не сразу понятна, рассмотрим следующие задачи: Какое значение необходимо прибавить к двоичному числу 00000001, чтобы получить число 00000000? В терминах десятичного исчисления ответом будет -1. Для двоичного рассмотрим 11111111:
   00000001
   11111111
 Результат  (1)00000000

Игнорируя перенос (1), можно видеть, что двоичное число 11111111 эквивалентно десятичному -1 и соответственно:
 0  00000000
 -(+1)  -00000001
 -1  11111111

Можно видеть также, каким образом двоичными числами представлены уменьшающиеся числа:
 +3  00000011
 +2  00000010
 +1  00000001
 0  00000000
 -1  11111111
 -2  11111110
 -3  11111101

Фактически нулевые биты в отрицательном двоичном числе определяют его величину: рассмотрите позиционные значения нулевых битов как если это были единичные биты, сложите эти значения и прибавьте единицу.

Шестнадцатеричное представление

Представим, что необходимо просмотреть содержимое некоторых байт в памяти. Требуется определить содержимое четырех последовательных байт (двух слов), которые имеют двоичные значения. Так как четыре байта включают в себя 32 бита, то специалисты разработали "стенографический" метод представления двоичных данных. По этому методу каждый байт делится пополам и каждые полбайта выражаются соответствующим значением. рассмотрим следующие четыре байта:
 Двоичное  0101  1001  001  0101  1011  1001  110  1110
 Десятичное  5 9
3
5
11
9
12
14

Так как здесь для некоторых чисел требуется две цифры, расширим систему счисления так, чтобы 10=A, 11=B, 12=C, 13=D, 14=E, 15=F. Таким образом, получим более сокращенную форму, которая представляет содержимое вышеуказанных байт:

 59  35  B9  CE

Такая система счисления включает "цифры" от 0 до F, и так как таких цифр 16, она называется шестнадцатеричным представлением.

Шестнадцатеричный формат нашел большое применение в языке ассемблера.

Если немного поработать с шестнадцатеричным форматом, то можно быстро привыкнуть к нему.

Следует помнить, что после шестнадцатеричного числа F следует шестнадцатеричное 10, что равно десятичному числу 16.

Заметьте также, что шестнадцатеричное 20 эквивалентно десятичному 32, шест. 100 -десятичному 256.

Машинное слово

Вся информация (данные) представлена в виде двоичных кодов. Для удобства работы введены следующие термины, обозначающие совокупности двоичных разрядов (см. табл.). Эти термины обычно используются в качестве единиц измерения объемов информации, хранимой или обрабатываемой в компьютере.

Таблица. Двоичные совокупности

Количество двоичных разрядов в группе

1

8

8*16

8*1024

8*10242

8*10243

8*10244

Наименование  единицы измерения

Бит

Байт

Параграф

Килобайт (Кбайт)

Мегабайт (Мбайт)

Гигабайт (Гбайт)

Терабайт (Тбайт)


Машинное слово - наибольшая последовательность бит, которую процессор может обрабатывать как единичное целое.

Длина машинного слова может быть разной – 8,16, 32 бита и т.д. Адрес машинного слова в памяти компьютера равен адресу младшего байта, входящего в это слово.

Адресуемость
– занесение информации в память и извлечение ее по адресам.

Восемь битов обеспечивают основу для двоичной арифметики и для представления символов, таких как буква A или символ *. Восемь битов дают 256 различных комбинаций включенных и выключенных состояний: от "все выключены" (00000000) до "все включены" (11111111). Например, сочетание включенных и выключенных битов для представления буквы A выглядит как 01000001, а для символа * - 00101010. Каждый байт в памяти компьютера имеет уникальный адрес, начиная с нуля.

Может появиться вопрос, откуда компьютер "знает", что значения бит 01000001 представляют букву A. Когда на клавиатуре нажата клавиша A, система принимает сигнал от этой конкретной клавиши в байт памяти. Этот сигнал устанавливает биты в значения 01000001. Можно переслать этот байт в памяти и, если передать его на экран или принтер, то будет сгенерирована буква A.

По соглашению биты в байте пронумерованы от 0 до 7 справа налево, как это показано для буквы A: 

Номера бит

7

6

5

4

3

2

1

0

Значения бит

0

1

0

0

0

0

0

1

Число 2 в десятой степени равно 1024, что составляет один килобайт и обозначается буквой К. Например, компьютер с памятью в 512К содержит 512 х 1024, т.е. 524288 байт.

Процессор в PC и в совместимых моделях использует 16-битовую архитектуру, поэтому он имеет доступ к 16-битовым значениям, как в памяти, так и в регистрах. 16-битовое (двухбайтовое) поле называется словом. Биты в слове пронумерованы от 0 до 15 справа налево, как это показано для букв PC:

Номера бит

15

14

13

12

11

10

9

8

 

7

6

5

4

3

2

1

0

Значения бит

0

1

0

1

0

0

0

0

 

0

1

0

0

0

0

1

1

Существуют также: двойное слово (4 байта), полуслово (1 байт), расширенное слово (8 байт), слово длиной 10 байт — 10 байт.

Вещественные числа

Формат с плавающей точкой использует представление вещественного числа R в виде произведения мантиссы m на основание системы счисления n в некоторой целой степени p, которую называют порядком: R=m*np. Представление числа в форме с плавающей точкой неоднозначно. Например, справедливы следующие равенства: 25,324 = 2,5324*101 = 0,0025324*104=2532,4*10-2 и т.п.

В ЭВМ используют нормализованное представление числа в форме с плавающей точкой. Мантисса в нормализованном представлении должна удовлетворять условию: 0.1p<=m<1p. Иначе говоря, мантисса меньше единицы и первая значащая цифра - не ноль.

В памяти компьютера мантисса представляется как целое число, содержащее только значащие цифры (0 целых и запятая не хранится). Следовательно, внутреннее представление вещественного числа сводится к представлению пары целых чисел: мантиссы и порядка.

В разных типах ЭВМ применяются различные варианты представления чисел в форме с плавающей точкой. Для примера рассмотрим внутреннее представление вещественного числа в 4-х байтовой ячейке памяти.

В ячейке должна содержаться следующая информация о числе: знак числа, порядок и значащие цифры мантиссы.

 ±маш. порядок  ма  нтис  са
1-й байт 2-й байт  3-й байт  4-й байт

В старшем бите 1-го байта хранится знак числа: 0 обозначает плюс, 1 – минус. Оставшиеся 7 бит первого байта содержат машинный порядок. В следующих трех байтах хранятся значащие цифры мантиссы (24 разряда).

В семи двоичных разрядах помещаются двоичные числа в диапазоне от 0000000 до 1111111. Значит, машинный порядок изменяется в диапазоне от 0 до 127 (в десятичной системе счисления). Всего 128 значений. Порядок, очевидно, может быть как положительным, так и отрицательным. Разумно эти 128 значений разделить поровну между положительными и отрицательными значениями порядка: от -64 до 63.

Машинный порядок смещен относительно математического и имеет только положительные значения. Смещение выбирается так, чтобы минимальному математическому значению порядка соответствовал нуль.

Связь между машинным порядком (Mp) и математическим (p) в рассматриваемом случае выражается формулой:

Mp=p+64.

Полученная формула записана в десятичной системе. В двоичной системе формула имеет вид: Mp2 = p2 + 100 00002.

Для записи внутреннего представления вещественного числа необходимо:
  1. перевести модуль данного числа в двоичную систему счисления с 24 значащими цифрами;
  2. нормализовать данное двоичное число;
  3. найти машинный порядок в двоичной системе счисления;
  4. учитывая знак числа, выписать его представление в 4-х байтовом машинном слове.
Диапазон вещественных чисел значительно шире диапазона целых чисел. Положительные и отрицательные числа расположены симметрично относительно нуля. Следовательно, максимальное и минимальное числа равны между собой по модулю.

Наименьшее по абсолютной величине число равно нулю. Наибольшее по абсолютной величине число в форме с плавающей точкой – это число с самой большой мантиссой и самым большим порядком.

Для 4-х байтового машинного слова таким числом будет:

0,111111111111111111111111*1021111111.

После перевода в десятичную систему счисления, получим:

(1-2-24)*263 »1019.

Множество вещественных чисел, представимых в памяти компьютера в форме с плавающей точкой, является ограниченным и дискретным.

Количество вещественных чисел, точно представимых в памяти компьютера, вычисляется по формуле: N = 2t * (U-L+1)+1. Здесь t – количество двоичных разрядов мантиссы; U- максимальное значение математического порядка; L – минимальное значение порядка. Для рассмотренного нами варианта (t=24, U=63, L=-64) получается: n=2 146 683 548.


Задачи для самостоятельной работы

Пример №1.
Компьютер имеет оперативную память 2 Кбайт. Указать адрес последнего байта оперативной памяти (десятичный, шестнадцатеричный, двоичный).
 
Решение.
Объем оперативной памяти составляет 2048 байт. Десятичный адрес (номер) последнего байта равен 2047, так как нумерация начинается с нуля. 204710=7FF16=0111 1111 11112.

Пример №2.
Объем оперативной памяти компьютера равен 1 Мбайту, а адрес последнего машинного слова 1 048 574. Чему равен размер машинного слова?

Решение.
1 Мбайт = 1024 Кбайта = 1 048 576 байт. Так как нумерация байтов начинается с нуля, значит адрес последнего байта будет равен 1 048 575. Таким образом, последнее машинное слово включает в себя 2 байта с номерами 1 048 574 и 1 048 575.
Ответ: 2 байта.

Пример №3.
Пусть для представления целых чисел в компьютере используется 16-разрядная ячейка (2 байта). Определить, каков диапазон хранимых чисел, если а) используются только положительные числа; б) используются как положительные, так и отрицательные числа в равном количестве.

Решение.
Всего в 16-разрядной ячейке может храниться 216=65536 различных значений. Следовательно:
а) диапазон значений от 0 до 65535 (от 0 до 2k-1);
б) диапазон значений от -32768 до 32767 (от -2k-1 до 2k-1-1).

Пример №4.

Получить внутреннее представление целого числа 1607 в 2-х байтовой ячейке.

Решение.

N = 160710 = 110010001112. Внутреннее представление этого числа в ячейке будет следующим: 0000 0110 0100 0111. Шестнадцатеричная форма внутреннего представления числа получается заменой 4-х двоичных цифр одной шестнадцатеричной цифрой: 0647.

Пример №5.
Получить внутреннее представление целого отрицательного числа -1607.

Решение.
1) Внутреннее представление положительного числа:     0000 0110 0100 0111
2) обратный код:                                                            1111 1001 1011 1000
3) результат прибавления 1:                                           1111 1001 1011 1001 – это внутреннее двоичное представление числа -1607.
Шестнадцатеричная форма: F9B9.

Пример №6.
Записать внутреннее представление числа 250,1875 в форме с плавающей точкой.

Решение.

  1. Переведем его в двоичную систему счисления с 24 значащими цифрами: 250,187510 = 11111010,00110000000000002.
  2. Запишем в форме нормализованного двоичного числа с плавающей точкой: 0,111110100011000000000000*1021000. Здесь мантисса, основание системы счисления (210 = 102) и порядок (810 = 10002) записаны в двоичной системе.
  3. Вычислим машинный порядок в двоичной системе счисления: Mp2=1000 + 100 0000 = 100 1000.
  4. Запишем представление числа в 4-х байтовой ячейке памяти с учетом знака числа:
 0
 1001000  11111010  00110000  00000000

Шестнадцатеричная форма: 48FA3000.

Пример №7.
По шестнадцатеричной форме внутреннего представления числа в форме с плавающей точкой C9811000 восстановить само число.

Решение.

  1. Перейдем к двоичному представлению числа в 4-х байтовой ячейке, заменив каждую шестнадцатеричную цифру 4-мя двоичными цифрами: 1100 1001 1000 0001 0001 0000 0000 0000
 1
 1001001  10000001  00010000  00000000
  1. Заметим, что получен код отрицательного числа, поскольку в старшем разряде с номером 31 записана 1. Получим порядок числа:
    p = 10010012–100000002 = 10012 = 910.
  2. Запишем в форме нормализованного двоичного числа с плавающей точкой с учетом знака числа:
    -0.100000010001000000000000*21001.
  3. Число в двоичной системе счисления имеет вид:
    -100000010,0012.
  4. Переведем число в десятичную систему счисления:
    -100000010,0012 =-(1*28+1*21+1*2-3)= -258,12510.

Задания для самостоятельной работы

№1.
Оперативная память компьютера содержит 163840 машинных слов, что составляет 0,625 Мбайт. Сколько бит содержит каждое машинное слово?

№2.
Объем оперативной памяти компьютера составляет 1/8 часть Мбайта. Сколько машинных слов составляют оперативную память, если одно машинное слово содержит 64 бита?

№3.
Вы работаете на компьютере с 2-х байтовым машинным словом. С каким шагом меняются адреса машинных слов?

№4.
Какой объем имеет оперативная память компьютера, если 3FF – шестнадцатеричный адрес последнего байта оперативной памяти?

№5.
FE – шестнадцатеричный адрес последнего машинного слова оперативной памяти компьютера, объем которой составляет ¼ Кбайт. Найти длину машинного слова (в байтах).

№6.
Какой объем имеет оперативная память компьютера, если 1FE – шестнадцатеричный адрес последнего 2-байтового машинного слова оперативной памяти?

№7.
Компьютер работает только с целыми положительными числами. Каков диапазон изменения чисел, если для представления числа в памяти компьютера отводится 1 байт?

№8.
Каков диапазон изменения целых чисел (положительных и отрицательных), если в памяти компьютера для представления целого числа отводится 1 байт?

№9.
Компьютер работает только с целыми положительными числами. Каков диапазон изменения чисел, если для представления числа в памяти компьютера отводится 4 байта?

№10.
Записать в двоичной и шестнадцатеричной форме внутреннее представление наибольшего положительного целого и наибольшего по абсолютной величине отрицательного целого числа, представленных в 2-х байтовой ячейке памяти.

№11.
Представить вещественное число 1) 0,005089; 2) 1234,0456 в нормализованной форме с плавающей точкой в десятичной системе счисления.

№12.
Для представления вещественного числа отводится 2 байта. Порядок занимает 7 бит. Сколько различных вещественных чисел точно представимы в памяти такого компьютера?

№13.
Для представления вещественного числа отводится 8 байт. Порядок занимает 11 бит. Сколько значащих цифр будет содержать двоичная мантисса?

№14.
Минимальное значение математического порядка в десятичной системе счисления равно (-1024). Чему равно смещение?

№15.
Получить шестнадцатеричную форму внутреннего представления отрицательного числа -123,125 в формате с плавающей точкой в 4-х байтовой ячейке.

№16.
В «игрушечном» компьютере для представления вещественных чисел используется однобайтовая ячейка памяти (биты нумеруются от 0 до 7 справа налево). 7-й бит – знак числа; 5 и 6 –машинный порядок; 4-0 биты – мантисса. Определить: 1) количество точно представимых вещественных чисел; 2) 5 наименьших положительных десятичных чисел, представимых точно в таком компьютере.

№17.
Увидит ли разницу «игрушечный» компьютер между следующими парами чисел: 1)1,4 и 1,5; 2)1,6 и 1,62; 3) 1,8 и 1,9?
Comments