31
Представление чисел в памяти компьютера. Долинин А.А., учитель информатики и ИКТ МБОУ «Уренская СОШ № 1»

представление чисел в памяти компьютера

Embed Size (px)

Citation preview

Page 1: представление чисел в памяти компьютера

Представление чисел в памяти компьютера.

Долинин А.А., учитель информатики и ИКТ МБОУ «Уренская СОШ № 1»

Page 2: представление чисел в памяти компьютера

ПРЕДСТАВЛЕНИЕ ЦЕЛЫХ ЧИСЕЛЛюбая информация в ЭВМ представляется в виде двоичных кодов. Отдельные

элементы двоичного кода, принимающие значение 0 или 1, называют разрядами или битами. Память компьютера условно делиться на отсеки или ячейки, каждая из которых имеет свой номер. Нумерация начинается с нуля.

Минимальной адресуемой ячейкой памяти называется байт – 8 двоичных разрядов. порядковый номер байта называется его адресом.

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

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

Page 3: представление чисел в памяти компьютера

Для положительных и отрицательных чисел существует знаковый способ представления числа. Под знак отводится старший разряд ячейки:

0 - для положительных чисел, 1 - для отрицательных чисел.

Целые числа• Представление чисел в формате с

фиксированной запятой

Дробные числа• представление числа в формате с

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

Два основных формата представления чисел

Page 4: представление чисел в памяти компьютера

ПРЕДСТАВЛЕНИЕ ЦЕЛЫХ ЧИСЕЛ В ФОРМАТЕ С ФИКСИРОВАННОЙ ЗАПЯТОЙ

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

При хранении чисел в памяти в формате с фиксированной запятой каждому разряду ячейки памяти соответствует всегда один и тот же разряд числа, а запятая находится справа после младшего разряда, т.е. вне разрядной сетки.

Достоинства: • простота и наглядность представления чисел;• простота алгоритмов реализации арифметических операций (вычитание

заменяется сложением).Недостаток:

• конечный диапазон представления величин, недостаточный для решения задач, в которых используются очень малые и/или очень большие числа.

0 0 0 0 1 0 1 01010=10102

Page 5: представление чисел в памяти компьютера

ЦЕЛЫЕ НЕОТРИЦАТЕЛЬНЫЕ ЧИСЛА

Для хранения целых неотрицательных чисел отводится одна ячейка памяти (8 битов).

Минимальное число:

Максимальное число:

Для n-разрядного представления максимальное целое неотрицательное число равно 2n – 1.

Минимальное число равно 0.

Максимальное число равно 25510.

111111112 = 1000000002 -1 = 28 – 1 = 25510

Диапазон изменения целых неотрицательных чисел от 0 до 255.

0 0 0 0 0 0 0 0

1 1 1 1 1 1 1 1

Page 6: представление чисел в памяти компьютера

ЦЕЛЫЕ ЧИСЛА СО ЗНАКОМ

Представление в компьютере положительных чисел с использованием формата «знак-величина» называется

прямым кодом числа.

Старший (левый) разряд отводится под знак числа: 0 – положительное число,1 – отрицательное число.

Для хранения целых чисел со знаком отводится две ячейки памяти (16 битов).

Для хранения больших целых чисел со знаком отводится четыре ячейки памяти (32 бита).

1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1

0 0 1 1 1 1 1 1

Page 7: представление чисел в памяти компьютера

ЦЕЛЫЕ ЧИСЛА СО ЗНАКОМ

Для n-разрядного представления со знаком (с учетом выделения одного разряда на знак):

максимальное положительное число равно 2n-1 – 1,

минимальное отрицательное число равно – 2n-1

Диапазон хранения целых чисел со знаком от – 32 768 до 32 767.

Диапазон хранения больших целых чисел со знаком

от – 2 147 483 648 до 2 147 483 647.

А10 = 215 – 1 = 3276710

А10 = – 215 = – 3276810

А10 = 231 – 1 = 2 147 483 647 10

А10 = – 231 = – 2 147 483 648 10

Page 8: представление чисел в памяти компьютера

ЦЕЛЫЕ ЧИСЛА СО ЗНАКОМ

3 +(-3) = 0

1 0 0 0 0 1 1 0 ≠ 01 0 0 0 0 0 1 10 0 0 0 0 0 1 1

Page 9: представление чисел в памяти компьютера

ДОПОЛНИТЕЛЬНЫЙ КОД

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

операцию вычитания операцией сложения.

Дополнительный код представляет собойдополнение модуля числа А до 0.

Дополнительный код отрицательного числа А, хранящегося в n ячейках, равен 2n - |А|.

Это равенство тождественно справедливо, так как в компьютерной n-разрядной арифметике 2n ≡ 0. Действительно, двоичная запись числа 2n состоит из одной единицы и n нулей, а в n-разрядную ячейку может уместиться только n младших

разрядов, т.е. n нулей. 28=100000000 0 0 0 0 0 0 0 0

2n - |А| + |А| = 0

Page 10: представление чисел в памяти компьютера

ДОПОЛНИТЕЛЬНЫЙ КОД

Найдём дополнительный код отрицательного числа –200210 при n=16:

2n 216 = 1 00000000 000000002 6553610

|А| 200210 = 00000111 110100102 200210

2n - |А| 216- |200210| = 11111000 001011102 6353410

1 1 1 1 1 0 0 0 0 0 1 0 1 1 1 00 0 0 0 0 1 1 1 1 1 0 1 0 0 1 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

2n - |А|

|А|

1

2n - |А| + |А| = 0

2n - |А|

Page 11: представление чисел в памяти компьютера

АЛГОРИТМ ПОЛУЧЕНИЯ ДОПОЛНИТЕЛЬНОГО КОДА

Алгоритм получения дополнительного кода отрицательного числа:1. Модуль числа записать прямым кодом в n двоичных

разрядах.2. Получить обратный код числа, для этого значения

всех битов инвертировать.3. К полученному обратному коду прибавить единицу.

Прямой код |-200210| 00000111 110100102

Обратный код Инвертирование 11111000 001011012

Прибавление единицы 11111000 001011012

00000000 000000012

Дополнительный код 11111000 001011102

Найдём дополнительный код отрицательного числа –200210 при n=16:

+

Page 12: представление чисел в памяти компьютера

ВЫПОЛНЕНИЕ АРИФМЕТИЧЕСКОГО ДЕЙСТВИЯ

Выполнить арифметическое действие 2010 – 3010 в 16-разрядном компьютерном представлении.

00000000 000101002

11111111 111000102

11111111 111101102

Десятичное число

Прямой код Обратный код Дополнительный код

20 00000000 000101002

-30 00000000 000111102 11111111 111000012 11111111 111000012

00000000 000000012

11111111 111000102

2010 – 3010 11111111 111101102

+

+

Дополнительный код

Page 13: представление чисел в памяти компьютера

ПЕРЕВОД ДОПОЛНИТЕЛЬНОГО КОДА В ДЕСЯТИЧНОЕ ЧИСЛО

В 16-разрядном компьютерном представлении

2010 – 3010 11111111 111101102

Переведем полученный дополнительный код в десятичное число:

1. Инвертируем дополнительный код:

00000000 000010012. К полученному коду прибавим 1 (получим модуль

отрицательного числа): 00000000 00001010

3. Переведем в десятичное число и припишем знак отрицательного числа: -10

Page 14: представление чисел в памяти компьютера

ПЕРЕВОД ДОПОЛНИТЕЛЬНОГО КОДА В ДЕСЯТИЧНОЕ ЧИСЛО

В 16-разрядном компьютерном представлении

2010 – 3010 11111111 111101102

Переведем полученный дополнительный код в десятичное число:

1. Отнимем 1 от дополнительного кода:

11111111 111101012. Инвертируем полученное число:

00000000 000010103. Переведем в десятичное число и припишем знак

отрицательного числа: -10

Почему не применяется данный метод перевода дополнительного кода в десятичное число?

Page 15: представление чисел в памяти компьютера

ПРАКТИКУМ

Задача. Найти минимальное отрицательное число в 8-разрядном компьютерном представлении

1 0 0 0 0 0 0 0Переведем дополнительный код 1000000 в десятичное число:

1. Инвертируем дополнительный код: 011111112. К полученному коду прибавим 1 (получим модуль отрицательного

числа): 100000003. Переведем в десятичное число и припишем знак отрицательного

числа: -128

Для n-разрядного представления со знаком минимальное отрицательное число равно –2n-1

Page 16: представление чисел в памяти компьютера

ПРАКТИКУМ

Задача. Найти максимальное отрицательное число в 8-разрядном компьютерном представлении

1 1 1 1 1 1 1 1Переведем дополнительный код 11111111 в десятичное число:

1. Инвертируем дополнительный код: 000000002. К полученному коду прибавим 1 (получим модуль отрицательного

числа): 000000013. Переведем в десятичное число и припишем знак отрицательного

числа: -1

Page 17: представление чисел в памяти компьютера

Выполняя на компьютере вычисления с целыми числами, нужно помнить

об ограниченности диапазона допустимых значений.

Выход результата за границы допустимого диапазона называется

переполнением.

Переполнение при вычислениях с целыми числами не вызывает прерывания работы

процессора, но результаты могут оказаться неправильными.

ОСОБЕННОСТИ РАБОТЫ С ЦЕЛЫМИ ЧИСЛАМИ

Page 18: представление чисел в памяти компьютера

ПРАКТИКУМ

Задача. Компьютер работает только с целыми числами, представленными в однобайтовой ячейке памяти. Какое значение будет получено в результате вычисления значения арифметического выражения 100+39?

Переведем в десятичное число и припишем знак отрицательного числа:

Решение:

Внутреннее представление числа 100: 01100100

Внутреннее представление числа 39: 00100111

Внутреннее представление суммы 100+39: 10001011

Знаковый разряд равен 1, значит число отрицательное.

Инвертируем код: 01110100

Прибавим 1: 01110101

-117

Переполнение привело к неправильному результату!

Page 19: представление чисел в памяти компьютера

Представление чисел в формате

с плавающей запятой

Page 20: представление чисел в памяти компьютера

ПРЕДСТАВЛЕНИЕ ЦЕЛЫХ ЧИСЕЛ В ФОРМАТЕ С ПЛАВАЮЩЕЙ ЗАПЯТОЙ

Вещественные числа хранятся и обрабатываются в компьютере в формате с плавающей запятой

(положение запятой в записи числа может изменяться).

Формат чисел с плавающей запятой базируется на экспоненциальной форме записи:

А = m qn,где m – мантисса числа, q – основание системы счисления, n – порядок числа.

Для однозначности представления чисел с плавающей запятой используется нормализованная форма, при которой мантисса отвечает условию:

1/n ≤ |m| < 1,т.е. мантисса должна быть правильной дробью и иметь после запятой цифру, отличную от нуля.

Page 21: представление чисел в памяти компьютера

ПРИВЕДЕНИЕ ЧИСЛА С ПЛАВАЮЩЕЙ ЗАПЯТОЙ К НОРМАЛИЗОВАННОЙ ФОРМЕ

Диапазон изменения чисел определяется количеством разрядов, отведенных для хранения порядка числа,

а точность (количество значащих цифр) определяется количеством разрядов, отведенных для хранения мантиссы.

Преобразуем десятичное число 888,888 в экспоненциальную форму с нормализованной мантиссой:

888,888 = 0,888888 103

Число в форме с плавающей запятой занимает в памяти компьютера четыре байта (число обычной точности) или восемь байтов (число двойной

точности).

Нормализованная мантисса m = 0,888888, порядок n = 3.

При записи числа с плавающей запятой выделяются разряды для хранения знака мантиссы, знака порядка, порядка и мантиссы.

Page 22: представление чисел в памяти компьютера

ОПРЕДЕЛЕНИЕ МАКСИМАЛЬНОГО ЧИСЛА И ЕГО ТОЧНОСТИ

Максимальное значение порядка числа составит 11111112 = 12710, следовательно, максимальное число:

2127 = 1,7014118346046923173168730371588 1038.

Максимальное значение положительной мантиссы: 223 – 1 ≈ 223 = 2(102,3) ≈ 10002,3 = 10(32,3) ≈ 107.

Максимальное значение чисел обычной точности с учетом возможной точности вычислений составит 1,701411 1038, т.к. количество значащих цифр

десятичного числа ограничено 7 разрядами).

Задача. Определить максимальное число и его точность для формата чисел обычной точности, если для хранения порядка и его знака отводится 8 разрядов, а для хранения мантиссы и ее знака – 24 разряда.

0 1 1 1 1 1 1 1

знак и порядок

0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

знак и мантисса

Page 23: представление чисел в памяти компьютера

АРИФМЕТИЧЕСКИЕ ОПЕРАЦИИ С ЧИСЛАМИ В ФОРМАТЕ С ПЛАВАЮЩЕЙ ЗАПЯТОЙ

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

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

При делении из порядка делимого вычитается порядок делителя, а мантисса делится на мантиссу делителя.

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

Выполнить арифметические операции с числами 0,1 25 и 0,1 23.

0,100 25 0,001 25

0,101 25

+

0,100 25 0,001 25

0,011 25 = 0,11 24

-

0,1 25 0,1 23

0,01 28 = 0,1 27

0,1 25 0,1 23

1 22 = 0,1 23

Page 24: представление чисел в памяти компьютера

Пример 1. Как будет представлено в памяти компьютера целое число 1234510 ?

РешениеДля размещения числа возьмем два байта.Поскольку число положительное, то в старшем (15-м) бите будет 0.Переведем число в двоичную систему счисления:1234510 = 110000001110012.Результат:

0 0110000 00111001

Знак числа число

ПРАКТИКУМ

Page 25: представление чисел в памяти компьютера

Пример 2. Как будет представлено в памяти компьютера число —123,4510 ? Решение Представим число в 4 байтах.Нормализованный вид: -0,12345∙103 .Число отрицательное, поэтому старшим (31-й) бит равен 1.Порядок равен 3, он положительный, значит, З0-й бит равен 0.Число 3 в двоичной системе счисления имеет вид 11. Чтобы записать его в оставшихся 6 битах старшего байта, необходимо добавить незначащие нули.Таким образом, старший байт имеет вид: 10000011 .Найдем двоичное представление мантиссы 0,12345 по алгоритму перевода дробной части, 24 раза умножив ее на 2.Результат:

Пример 2. Раскодировать содержимое четырех байтов памяти: а) как два целых числа; б) как одно вещественное:

Решениеа) 17793;-128;б) приблизительно 0,5058593 • 10-3 (порядок записан в дополнительном коде).

01000101 10000001 10000000 10000000

Page 26: представление чисел в памяти компьютера

Пример 3.

Записать внутреннее представление числа 250,1875 в форме с плавающей точкой в 4-х байтовом машинном слове.Решение:1. Переведем число в двоичную систему счисления с 24 значащими цифрами (3 байта под мантиссу):250.187510= 11111010,00110000000000002.2. Запишем в форме нормализованного двоичного числа с плавающей точкой: 0,111110100011000000000000∙101000

2. Здесь мантисса, основание системы счисления (210 = 102) и порядок (810 = 10002) записаны в двоичной системе.3. Вычислим характеристику: S2 =1000 + 1000000 = 1001000.4. Запишем представление числа в 4-байтовой ячейке памяти с учетом знака числа:

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

0 1001000 11111010 00110000 00000000

Page 27: представление чисел в памяти компьютера

Задания для самостоятельного выполнения

1. Запишите прямые коды десятичных чисел в однобайтовом формате:а) 64 б) 58 в) 72 г) -96

2. Запишите двоичные числа в дополнительном коде:а) 1010 б) -1001 в) -11 г) -11011

3. Переведите в прямой код числа, записанные в дополнительном коде, и найдите их десятичные эквиваленты:

а) 00000100 б) 11111001

4. Представьте целые числа в 16-разрядной ЭВМ:а) 25 б) -25 в) 801 г) -610

Page 28: представление чисел в памяти компьютера

Задания для самостоятельного выполнения

1. Сравните числа:а) 318,4785 10∙ 9 и 3,184785 10∙ 11; б) 218,4785 10∙ -3 и 1847,85 10∙ -4;

2. Запишите числа в естественной форме:а) 0,1100000 2∙ 100; б) 0,1001111 2∙ -111;

3. Выполните действия:а) 0,101010 2∙ 11 + 0,110011 2∙ 100;б) 0,100011 2∙ 100 – 0,100001 2∙ 100;в) 0,110011 2∙ -10 * 0,100001 2∙ 1;г) 0,101001 2∙ 10 / 0,100000 2∙ 10.

Page 29: представление чисел в памяти компьютера

СЛОЖЕНИЕ ЧИСЕЛ С ПЛАВАЮЩЕЙ ЗАПЯТОЙ

Page 30: представление чисел в памяти компьютера

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

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

1. Представить числа А и В в нормализованном виде, записав отдельно значения мантисс и порядков.

2. Выровнять порядки по числу с большим порядком.3. Выровнять число цифр в мантиссах по числу, порядок которого не

изменился.4. Сложить числа.5. Нормализовать сумму, оставив число цифр в мантиссе таким, как у

числа, порядок которого не изменялся.

Page 31: представление чисел в памяти компьютера

Пример. Найти сумму чисел А = 9,6098 и В = 98,009 по правилу сложения чисел с плавающей запятой.

Решение:Результат представим в виде таблицы:

Шаг Число Нормализованное число Порядок Мантисса Число цифр в

мантиссе

1 А=9,6098 0,96098 10∙ 1 1 96098 5

В=98,009 0,98009 10∙ 2 2 98009 5

2 А 0,096098 10∙ 2 2 096098 6

3 А 0,09609 10∙ 2 2 09609 5

4 А+В 1,07618 10∙ 2 2 - -

5 А+В 0,101761 10∙ 3 3 10761 5