Представление чисел в
памяти компьютера.
Долинин А.А., учитель информатики и ИКТ
МБОУ «Уренская СОШ № 1»
ПРЕДСТАВЛЕНИЕ ЦЕЛЫХ ЧИСЕЛ
Любая информация в ЭВМ представляется в виде двоичных кодов. Отдельные
элементы двоичного кода, принимающие значение 0 или 1, называют разрядами или
битами. Память компьютера условно делиться на отсеки или ячейки, каждая из которых
имеет свой номер. Нумерация начинается с нуля.
Минимальной адресуемой ячейкой памяти называется байт – 8 двоичных
разрядов. порядковый номер байта называется его адресом.
Наибольшую последовательность битов, которую процессор может обрабатывать
как единое целое, называют машинным словом.
Длина машинного слова может быть разной - 8 , 16 , 32 бит и т.д. Двоичные
разряды в любой ячейке памяти нумеруются справа налево, начиная с нуля.
Для положительных и отрицательных чисел существует знаковый способ
представления числа. Под знак отводится старший разряд ячейки:
0 - для положительных чисел,
1 - для отрицательных чисел.
Целые числа
• Представление чисел в формате с
фиксированной запятой
Дробные числа
• представление числа в формате с
плавающей точкой используется для
задания некоторого подмножества
действительных чисел
Два основных формата
представления чисел
ПРЕДСТАВЛЕНИЕ ЦЕЛЫХ ЧИСЕЛ
В ФОРМАТЕ С ФИКСИРОВАННОЙ ЗАПЯТОЙ
Целые числа в компьютере хранятся в памяти в формате
с фиксированной запятой.
При хранении чисел в памяти в формате с фиксированной запятой каждому
разряду ячейки памяти соответствует всегда один и тот же разряд числа, а
запятая находится справа после младшего разряда, т.е. вне разрядной сетки.
Достоинства:
• простота и наглядность представления чисел;
• простота алгоритмов реализации арифметических операций (вычитание
заменяется сложением).
Недостаток:
• конечный диапазон представления величин, недостаточный для
решения задач, в которых используются очень малые и/или очень большие
числа.
0 0 0 0 1 0 1 01010=10102
ЦЕЛЫЕ НЕОТРИЦАТЕЛЬНЫЕ ЧИСЛА
Для хранения целых неотрицательных чисел отводится
одна ячейка памяти (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
ЦЕЛЫЕ ЧИСЛА СО ЗНАКОМ
Представление в компьютере положительных чисел
с использованием формата «знак-величина» называется
прямым кодом числа.
Старший (левый) разряд отводится под знак числа:
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
ЦЕЛЫЕ ЧИСЛА СО ЗНАКОМ
Для 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
ЦЕЛЫЕ ЧИСЛА СО ЗНАКОМ
3 +(-3) = 0
1 0 0 0 0 1 1 0 ≠ 0
1 0 0 0 0 0 1 1
0 0 0 0 0 0 1 1
ДОПОЛНИТЕЛЬНЫЙ КОД
Для представления отрицательных чисел используется
дополнительный код, позволяющий заменить арифметическую
операцию вычитания операцией сложения.
Дополнительный код представляет собой
дополнение модуля числа А до 0.
Дополнительный код отрицательного числа А,
хранящегося в n ячейках, равен 2n - |А|.
Это равенство тождественно справедливо, так как в компьютерной
n-разрядной арифметике 2n ≡ 0.
Действительно, двоичная запись числа 2n состоит из одной единицы и n
нулей, а в n-разрядную ячейку может уместиться только n младших
разрядов, т.е. n нулей. 28=100000000
0 0 0 0 0 0 0 0
2n - |А| + |А| = 0
ДОПОЛНИТЕЛЬНЫЙ КОД
Найдём дополнительный код отрицательного числа –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 0
0 0 0 0 0 1 1 1 1 1 0 1 0 0 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
2n - |А|
|А|
1
2n - |А| + |А| = 0
2n - |А|
АЛГОРИТМ ПОЛУЧЕНИЯ
ДОПОЛНИТЕЛЬНОГО КОДА
Алгоритм получения дополнительного кода отрицательного
числа:
1. Модуль числа записать прямым кодом в n двоичных
разрядах.
2. Получить обратный код числа, для этого значения
всех битов инвертировать.
3. К полученному обратному коду прибавить единицу.
Прямой код |-200210| 00000111 110100102
Обратный код Инвертирование 11111000 001011012
Прибавление единицы 11111000 001011012
00000000 000000012
Дополнительный код 11111000 001011102
Найдём дополнительный код отрицательного числа –200210 при
n=16:
+
ВЫПОЛНЕНИЕ
АРИФМЕТИЧЕСКОГО ДЕЙСТВИЯ
Выполнить арифметическое действие 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
+
+
Дополнительный код
ПЕРЕВОД ДОПОЛНИТЕЛЬНОГО КОДА В ДЕСЯТИЧНОЕ ЧИСЛО
В 16-разрядном компьютерном представлении
2010 – 3010  11111111 111101102
Переведем полученный дополнительный код в десятичное число:
1. Инвертируем дополнительный код:
00000000 00001001
2. К полученному коду прибавим 1 (получим модуль
отрицательного числа):
00000000 00001010
3. Переведем в десятичное число и припишем знак
отрицательного числа: -10
ПЕРЕВОД
ДОПОЛНИТЕЛЬНОГО КОДА В ДЕСЯТИЧНОЕ ЧИСЛО
В 16-разрядном компьютерном представлении
2010 – 3010  11111111 111101102
Переведем полученный дополнительный код в десятичное число:
1. Отнимем 1 от дополнительного кода:
11111111 11110101
2. Инвертируем полученное число:
00000000 00001010
3. Переведем в десятичное число и припишем знак
отрицательного числа: -10
Почему не применяется данный метод перевода
дополнительного кода в десятичное число?
ПРАКТИКУМ
Задача. Найти минимальное отрицательное число в 8-разрядном
компьютерном представлении
1 0 0 0 0 0 0 0
Переведем дополнительный код 1000000 в десятичное число:
1. Инвертируем дополнительный код: 01111111
2. К полученному коду прибавим 1 (получим модуль отрицательного
числа): 10000000
3. Переведем в десятичное число и припишем знак отрицательного
числа: -128
Для n-разрядного представления со знаком минимальное отрицательное число равно –2n-1
ПРАКТИКУМ
Задача. Найти максимальное отрицательное число в 8-разрядном
компьютерном представлении
1 1 1 1 1 1 1 1
Переведем дополнительный код 11111111 в десятичное число:
1. Инвертируем дополнительный код: 00000000
2. К полученному коду прибавим 1 (получим модуль отрицательного
числа): 00000001
3. Переведем в десятичное число и припишем знак отрицательного
числа: -1
Выполняя на компьютере вычисления с целыми
числами, нужно помнить
об ограниченности диапазона
допустимых значений.
Выход результата за границы
допустимого диапазона называется
переполнением.
Переполнение при вычислениях с целыми
числами не вызывает прерывания работы
процессора, но результаты могут
оказаться неправильными.
ОСОБЕННОСТИ РАБОТЫ
С ЦЕЛЫМИ ЧИСЛАМИ
ПРАКТИКУМ
Задача. Компьютер работает только с целыми числами,
представленными в однобайтовой ячейке памяти. Какое
значение будет получено в результате вычисления
значения арифметического выражения 100+39?
Переведем в десятичное число
и припишем знак отрицательного числа:
Решение:
Внутреннее представление числа 100: 01100100
Внутреннее представление числа 39: 00100111
Внутреннее представление суммы 100+39: 10001011
Знаковый разряд равен 1, значит число отрицательное.
Инвертируем код: 01110100
Прибавим 1: 01110101
-117
Переполнение привело к неправильному результату!
Представление чисел
в формате
с плавающей запятой
ПРЕДСТАВЛЕНИЕ ЦЕЛЫХ ЧИСЕЛ В ФОРМАТЕ
С ПЛАВАЮЩЕЙ ЗАПЯТОЙ
Вещественные числа хранятся и обрабатываются в компьютере в
формате с плавающей запятой
(положение запятой в записи числа может изменяться).
Формат чисел с плавающей запятой базируется на экспоненциальной
форме записи:
А = m  qn,
где m – мантисса числа,
q – основание системы счисления,
n – порядок числа.
Для однозначности представления чисел с плавающей запятой
используется нормализованная форма, при которой мантисса отвечает
условию:
1/n ≤ |m| < 1,
т.е. мантисса должна быть правильной дробью и иметь после запятой
цифру, отличную от нуля.
ПРИВЕДЕНИЕ ЧИСЛА С ПЛАВАЮЩЕЙ ЗАПЯТОЙ К
НОРМАЛИЗОВАННОЙ ФОРМЕ
Диапазон изменения чисел определяется количеством разрядов, отведенных
для хранения порядка числа,
а точность (количество значащих цифр) определяется количеством разрядов,
отведенных для хранения мантиссы.
Преобразуем десятичное число 888,888 в экспоненциальную форму с
нормализованной мантиссой:
888,888 = 0,888888  103
Число в форме с плавающей запятой занимает в памяти компьютера
четыре байта (число обычной точности) или восемь байтов (число двойной
точности).
Нормализованная мантисса m = 0,888888, порядок n = 3.
При записи числа с плавающей запятой выделяются разряды для
хранения знака мантиссы, знака порядка, порядка и мантиссы.
ОПРЕДЕЛЕНИЕ МАКСИМАЛЬНОГО ЧИСЛА
И ЕГО ТОЧНОСТИ
Максимальное значение порядка числа составит 11111112 = 12710,
следовательно, максимальное число:
2127 = 1,7014118346046923173168730371588  1038.
Максимальное значение положительной мантиссы:
223 – 1 ≈ 223 = 2(102,3) ≈ 10002,3 = 10(32,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
знак и мантисса
АРИФМЕТИЧЕСКИЕ ОПЕРАЦИИ С ЧИСЛАМИ
В ФОРМАТЕ С ПЛАВАЮЩЕЙ ЗАПЯТОЙ
При сложении и вычитании чисел в формате с
плавающей запятой сначала производится
выравнивание порядков (меньший по
модулю порядок числа увеличивается до
величины большего по модулю порядка числа,
а мантисса уменьшается в такое же количество
раз), а затем сложение или вычитание
мантисс.
При умножении чисел в формате с плавающей
запятой порядки складываются, а
мантиссы перемножаются.
При делении из порядка делимого
вычитается порядок делителя, а
мантисса делится на мантиссу делителя.
После выполнения арифметической операции производится нормализация.
Выполнить арифметические операции с числами 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

Пример 1. Как будет представлено в памяти компьютера целое число 1234510 ?
Решение
Для размещения числа возьмем два байта.
Поскольку число положительное, то в старшем (15-м) бите будет 0.
Переведем число в двоичную систему счисления:
1234510 = 110000001110012.
Результат:
0 0110000 00111001
Знак числа число
ПРАКТИКУМ
Пример 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
Пример 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
Задания для самостоятельного выполнения
1. Запишите прямые коды десятичных чисел в однобайтовом формате:
а) 64 б) 58 в) 72 г) -96
2. Запишите двоичные числа в дополнительном коде:
а) 1010 б) -1001 в) -11 г) -11011
3. Переведите в прямой код числа, записанные в дополнительном коде, и
найдите их десятичные эквиваленты:
а) 00000100 б) 11111001
4. Представьте целые числа в 16-разрядной ЭВМ:
а) 25 б) -25 в) 801 г) -610
Задания для самостоятельного выполнения
1. Сравните числа:
а) 318,4785∙109 и 3,184785∙1011; б) 218,4785∙10-3 и 1847,85∙10-4;
2. Запишите числа в естественной форме:
а) 0,1100000∙2100; б) 0,1001111∙2-111;
3. Выполните действия:
а) 0,101010∙211 + 0,110011∙2100;
б) 0,100011∙2100 – 0,100001∙2100;
в) 0,110011∙2-10 * 0,100001∙21;
г) 0,101001∙210 / 0,100000∙210.
СЛОЖЕНИЕ ЧИСЕЛ С ПЛАВАЮЩЕЙ
ЗАПЯТОЙ
Выполнение арифметических действий над числами с плавающей запятой
гораздо сложнее целочисленной арифметики. Для некоторых процессоров (в
частности Intel) операции над вещественными числами вынесены в отдельный
узел, который называют математическим сопроцессором.
Сложение чисел с плавающей запятой выполняется в соответствии со
следующим алгоритмом.
1. Представить числа А и В в нормализованном виде, записав отдельно
значения мантисс и порядков.
2. Выровнять порядки по числу с большим порядком.
3. Выровнять число цифр в мантиссах по числу, порядок которого не
изменился.
4. Сложить числа.
5. Нормализовать сумму, оставив число цифр в мантиссе таким, как у
числа, порядок которого не изменялся.
Пример. Найти сумму чисел А = 9,6098 и В = 98,009 по правилу сложения
чисел с плавающей запятой.
Решение:
Результат представим в виде таблицы:
Шаг Число Нормализованное число Порядок Мантисса Число
цифр в
мантиссе
1 А=9,6098 0,96098∙101 1 96098 5
В=98,009 0,98009∙102 2 98009 5
2 А 0,096098∙102 2 096098 6
3 А 0,09609∙102 2 09609 5
4 А+В 1,07618∙102 2 - -
5 А+В 0,101761∙103 3 10761 5

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

  • 1.
    Представление чисел в памятикомпьютера. Долинин А.А., учитель информатики и ИКТ МБОУ «Уренская СОШ № 1»
  • 2.
    ПРЕДСТАВЛЕНИЕ ЦЕЛЫХ ЧИСЕЛ Любаяинформация в ЭВМ представляется в виде двоичных кодов. Отдельные элементы двоичного кода, принимающие значение 0 или 1, называют разрядами или битами. Память компьютера условно делиться на отсеки или ячейки, каждая из которых имеет свой номер. Нумерация начинается с нуля. Минимальной адресуемой ячейкой памяти называется байт – 8 двоичных разрядов. порядковый номер байта называется его адресом. Наибольшую последовательность битов, которую процессор может обрабатывать как единое целое, называют машинным словом. Длина машинного слова может быть разной - 8 , 16 , 32 бит и т.д. Двоичные разряды в любой ячейке памяти нумеруются справа налево, начиная с нуля.
  • 3.
    Для положительных иотрицательных чисел существует знаковый способ представления числа. Под знак отводится старший разряд ячейки: 0 - для положительных чисел, 1 - для отрицательных чисел. Целые числа • Представление чисел в формате с фиксированной запятой Дробные числа • представление числа в формате с плавающей точкой используется для задания некоторого подмножества действительных чисел Два основных формата представления чисел
  • 4.
    ПРЕДСТАВЛЕНИЕ ЦЕЛЫХ ЧИСЕЛ ВФОРМАТЕ С ФИКСИРОВАННОЙ ЗАПЯТОЙ Целые числа в компьютере хранятся в памяти в формате с фиксированной запятой. При хранении чисел в памяти в формате с фиксированной запятой каждому разряду ячейки памяти соответствует всегда один и тот же разряд числа, а запятая находится справа после младшего разряда, т.е. вне разрядной сетки. Достоинства: • простота и наглядность представления чисел; • простота алгоритмов реализации арифметических операций (вычитание заменяется сложением). Недостаток: • конечный диапазон представления величин, недостаточный для решения задач, в которых используются очень малые и/или очень большие числа. 0 0 0 0 1 0 1 01010=10102
  • 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
  • 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
  • 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
  • 8.
    ЦЕЛЫЕ ЧИСЛА СОЗНАКОМ 3 +(-3) = 0 1 0 0 0 0 1 1 0 ≠ 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1
  • 9.
    ДОПОЛНИТЕЛЬНЫЙ КОД Для представленияотрицательных чисел используется дополнительный код, позволяющий заменить арифметическую операцию вычитания операцией сложения. Дополнительный код представляет собой дополнение модуля числа А до 0. Дополнительный код отрицательного числа А, хранящегося в n ячейках, равен 2n - |А|. Это равенство тождественно справедливо, так как в компьютерной n-разрядной арифметике 2n ≡ 0. Действительно, двоичная запись числа 2n состоит из одной единицы и n нулей, а в n-разрядную ячейку может уместиться только n младших разрядов, т.е. n нулей. 28=100000000 0 0 0 0 0 0 0 0 2n - |А| + |А| = 0
  • 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 0 0 0 0 0 0 1 1 1 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2n - |А| |А| 1 2n - |А| + |А| = 0 2n - |А|
  • 11.
    АЛГОРИТМ ПОЛУЧЕНИЯ ДОПОЛНИТЕЛЬНОГО КОДА Алгоритмполучения дополнительного кода отрицательного числа: 1. Модуль числа записать прямым кодом в n двоичных разрядах. 2. Получить обратный код числа, для этого значения всех битов инвертировать. 3. К полученному обратному коду прибавить единицу. Прямой код |-200210| 00000111 110100102 Обратный код Инвертирование 11111000 001011012 Прибавление единицы 11111000 001011012 00000000 000000012 Дополнительный код 11111000 001011102 Найдём дополнительный код отрицательного числа –200210 при n=16: +
  • 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 + + Дополнительный код
  • 13.
    ПЕРЕВОД ДОПОЛНИТЕЛЬНОГО КОДАВ ДЕСЯТИЧНОЕ ЧИСЛО В 16-разрядном компьютерном представлении 2010 – 3010  11111111 111101102 Переведем полученный дополнительный код в десятичное число: 1. Инвертируем дополнительный код: 00000000 00001001 2. К полученному коду прибавим 1 (получим модуль отрицательного числа): 00000000 00001010 3. Переведем в десятичное число и припишем знак отрицательного числа: -10
  • 14.
    ПЕРЕВОД ДОПОЛНИТЕЛЬНОГО КОДА ВДЕСЯТИЧНОЕ ЧИСЛО В 16-разрядном компьютерном представлении 2010 – 3010  11111111 111101102 Переведем полученный дополнительный код в десятичное число: 1. Отнимем 1 от дополнительного кода: 11111111 11110101 2. Инвертируем полученное число: 00000000 00001010 3. Переведем в десятичное число и припишем знак отрицательного числа: -10 Почему не применяется данный метод перевода дополнительного кода в десятичное число?
  • 15.
    ПРАКТИКУМ Задача. Найти минимальноеотрицательное число в 8-разрядном компьютерном представлении 1 0 0 0 0 0 0 0 Переведем дополнительный код 1000000 в десятичное число: 1. Инвертируем дополнительный код: 01111111 2. К полученному коду прибавим 1 (получим модуль отрицательного числа): 10000000 3. Переведем в десятичное число и припишем знак отрицательного числа: -128 Для n-разрядного представления со знаком минимальное отрицательное число равно –2n-1
  • 16.
    ПРАКТИКУМ Задача. Найти максимальноеотрицательное число в 8-разрядном компьютерном представлении 1 1 1 1 1 1 1 1 Переведем дополнительный код 11111111 в десятичное число: 1. Инвертируем дополнительный код: 00000000 2. К полученному коду прибавим 1 (получим модуль отрицательного числа): 00000001 3. Переведем в десятичное число и припишем знак отрицательного числа: -1
  • 17.
    Выполняя на компьютеревычисления с целыми числами, нужно помнить об ограниченности диапазона допустимых значений. Выход результата за границы допустимого диапазона называется переполнением. Переполнение при вычислениях с целыми числами не вызывает прерывания работы процессора, но результаты могут оказаться неправильными. ОСОБЕННОСТИ РАБОТЫ С ЦЕЛЫМИ ЧИСЛАМИ
  • 18.
    ПРАКТИКУМ Задача. Компьютер работаеттолько с целыми числами, представленными в однобайтовой ячейке памяти. Какое значение будет получено в результате вычисления значения арифметического выражения 100+39? Переведем в десятичное число и припишем знак отрицательного числа: Решение: Внутреннее представление числа 100: 01100100 Внутреннее представление числа 39: 00100111 Внутреннее представление суммы 100+39: 10001011 Знаковый разряд равен 1, значит число отрицательное. Инвертируем код: 01110100 Прибавим 1: 01110101 -117 Переполнение привело к неправильному результату!
  • 19.
  • 20.
    ПРЕДСТАВЛЕНИЕ ЦЕЛЫХ ЧИСЕЛВ ФОРМАТЕ С ПЛАВАЮЩЕЙ ЗАПЯТОЙ Вещественные числа хранятся и обрабатываются в компьютере в формате с плавающей запятой (положение запятой в записи числа может изменяться). Формат чисел с плавающей запятой базируется на экспоненциальной форме записи: А = m  qn, где m – мантисса числа, q – основание системы счисления, n – порядок числа. Для однозначности представления чисел с плавающей запятой используется нормализованная форма, при которой мантисса отвечает условию: 1/n ≤ |m| < 1, т.е. мантисса должна быть правильной дробью и иметь после запятой цифру, отличную от нуля.
  • 21.
    ПРИВЕДЕНИЕ ЧИСЛА СПЛАВАЮЩЕЙ ЗАПЯТОЙ К НОРМАЛИЗОВАННОЙ ФОРМЕ Диапазон изменения чисел определяется количеством разрядов, отведенных для хранения порядка числа, а точность (количество значащих цифр) определяется количеством разрядов, отведенных для хранения мантиссы. Преобразуем десятичное число 888,888 в экспоненциальную форму с нормализованной мантиссой: 888,888 = 0,888888  103 Число в форме с плавающей запятой занимает в памяти компьютера четыре байта (число обычной точности) или восемь байтов (число двойной точности). Нормализованная мантисса m = 0,888888, порядок n = 3. При записи числа с плавающей запятой выделяются разряды для хранения знака мантиссы, знака порядка, порядка и мантиссы.
  • 22.
    ОПРЕДЕЛЕНИЕ МАКСИМАЛЬНОГО ЧИСЛА ИЕГО ТОЧНОСТИ Максимальное значение порядка числа составит 11111112 = 12710, следовательно, максимальное число: 2127 = 1,7014118346046923173168730371588  1038. Максимальное значение положительной мантиссы: 223 – 1 ≈ 223 = 2(102,3) ≈ 10002,3 = 10(32,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 знак и мантисса
  • 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 
  • 24.
    Пример 1. Какбудет представлено в памяти компьютера целое число 1234510 ? Решение Для размещения числа возьмем два байта. Поскольку число положительное, то в старшем (15-м) бите будет 0. Переведем число в двоичную систему счисления: 1234510 = 110000001110012. Результат: 0 0110000 00111001 Знак числа число ПРАКТИКУМ
  • 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
  • 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
  • 27.
    Задания для самостоятельноговыполнения 1. Запишите прямые коды десятичных чисел в однобайтовом формате: а) 64 б) 58 в) 72 г) -96 2. Запишите двоичные числа в дополнительном коде: а) 1010 б) -1001 в) -11 г) -11011 3. Переведите в прямой код числа, записанные в дополнительном коде, и найдите их десятичные эквиваленты: а) 00000100 б) 11111001 4. Представьте целые числа в 16-разрядной ЭВМ: а) 25 б) -25 в) 801 г) -610
  • 28.
    Задания для самостоятельноговыполнения 1. Сравните числа: а) 318,4785∙109 и 3,184785∙1011; б) 218,4785∙10-3 и 1847,85∙10-4; 2. Запишите числа в естественной форме: а) 0,1100000∙2100; б) 0,1001111∙2-111; 3. Выполните действия: а) 0,101010∙211 + 0,110011∙2100; б) 0,100011∙2100 – 0,100001∙2100; в) 0,110011∙2-10 * 0,100001∙21; г) 0,101001∙210 / 0,100000∙210.
  • 29.
    СЛОЖЕНИЕ ЧИСЕЛ СПЛАВАЮЩЕЙ ЗАПЯТОЙ
  • 30.
    Выполнение арифметических действийнад числами с плавающей запятой гораздо сложнее целочисленной арифметики. Для некоторых процессоров (в частности Intel) операции над вещественными числами вынесены в отдельный узел, который называют математическим сопроцессором. Сложение чисел с плавающей запятой выполняется в соответствии со следующим алгоритмом. 1. Представить числа А и В в нормализованном виде, записав отдельно значения мантисс и порядков. 2. Выровнять порядки по числу с большим порядком. 3. Выровнять число цифр в мантиссах по числу, порядок которого не изменился. 4. Сложить числа. 5. Нормализовать сумму, оставив число цифр в мантиссе таким, как у числа, порядок которого не изменялся.
  • 31.
    Пример. Найти суммучисел А = 9,6098 и В = 98,009 по правилу сложения чисел с плавающей запятой. Решение: Результат представим в виде таблицы: Шаг Число Нормализованное число Порядок Мантисса Число цифр в мантиссе 1 А=9,6098 0,96098∙101 1 96098 5 В=98,009 0,98009∙102 2 98009 5 2 А 0,096098∙102 2 096098 6 3 А 0,09609∙102 2 09609 5 4 А+В 1,07618∙102 2 - - 5 А+В 0,101761∙103 3 10761 5