Представление чисел в формате с фиксированной...
-
Upload
kelly-jarvis -
Category
Documents
-
view
84 -
download
0
description
Transcript of Представление чисел в формате с фиксированной...
Представление чисел Представление чисел в формате в формате
с фиксированной запятойс фиксированной запятой
Изучаемые вопросы:• Представление целых чисел в памяти компьютера.• Представление отрицательных чисел в памяти компьютера.• Размер ячейки и диапазон значений чисел.• Особенности работы компьютера с целыми числами.
23 ноября
ПРЕДСТАВЛЕНИЕ ЦЕЛЫХ ЧИСЕЛ В ФОРМАТЕ С ФИКСИРОВАННОЙ ЗАПЯТОЙ
Целые числа в компьютере хранятся в памяти в формате с фиксированной запятой.
При хранении чисел в памяти в формате с фиксированной запятой каждому разряду ячейки памяти соответствует всегда один и тот же разряд числа, а запятая находится справа после младшего разряда, т.е. вне разрядной сетки.
Достоинства: • простота и наглядность представления чисел;• простота алгоритмов реализации арифметических операций (вычитание заменяется сложением).
Недостаток:• конечный диапазон представления величин, недостаточный для решения задач, в которых используются очень малые и/или очень большие числа.
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 10 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 000010103. Переведем в десятичное число и припишем знак
отрицательного числа: -10
ПЕРЕВОД ДОПОЛНИТЕЛЬНОГО КОДА В ДЕСЯТИЧНОЕ ЧИСЛО
В 16-разрядном компьютерном представлении
2010 – 3010 11111111 111101102
Переведем полученный дополнительный код в десятичное число:
1. Отнимем 1 от дополнительного кода:
11111111 11110101
2. Инвертируем полученное число:
00000000 000010103. Переведем в десятичное число и припишем знак
отрицательного числа: -10
Почему не применяется данный метод перевода дополнительного кода в десятичное число?
ПРАКТИКУМ
Задача. Найти минимальное отрицательное число в 8-разрядном компьютерном представлении
1 0 0 0 0 0 0 0Переведем дополнительный код 1000000 в десятичное число:
1. Инвертируем дополнительный код: 011111112. К полученному коду прибавим 1 (получим модуль отрицательного
числа): 100000003. Переведем в десятичное число и припишем знак отрицательного
числа: -128
Для n-разрядного представления со знаком минимальное отрицательное число равно –2n-1
ПРАКТИКУМ
Задача. Найти максимальное отрицательное число в 8-разрядном компьютерном представлении
1 1 1 1 1 1 1 1Переведем дополнительный код 11111111 в десятичное число:
1. Инвертируем дополнительный код: 000000002. К полученному коду прибавим 1 (получим модуль отрицательного
числа): 000000013. Переведем в десятичное число и припишем знак отрицательного
числа: -1
Выполняя на компьютере вычисления с целыми числами, нужно помнить
об ограниченности диапазона допустимых значений.
Выход результата за границы допустимого диапазона называется
переполнением.
Переполнение при вычислениях с целыми числами не вызывает прерывания работы
процессора, но результаты могут оказаться неправильными.
ОСОБЕННОСТИ РАБОТЫ С ЦЕЛЫМИ ЧИСЛАМИ
ПРАКТИКУМ
Задача. Компьютер работает только с целыми числами, представленными в однобайтовой ячейке памяти. Какое значение будет получено в результате вычисления значения арифметического выражения 100+39?
Переведем в десятичное число и припишем знак отрицательного числа:
Решение:
Внутреннее представление числа 100: 01100100
Внутреннее представление числа 39: 00100111
Внутреннее представление суммы 100+39: 10001011
Знаковый разряд равен 1, значит число отрицательное.
Инвертируем код:
01110100
Прибавим 1: 01110101
-117
Переполнение привело к неправильному результату!
ПРАКТИКУМ
1. Записать внутреннее представление следующих десятичных чисел, • используя 8-разрядную ячейку: а) 64 б) -120 в) -96 г) 57
• используя 16-разрядную ячейку: а) -15098 б) 6524 в) -28987
2. Определите, каким десятичным числам соответствуют следующие двоичные коды 8-разрядного представления целых чисел:
а) 00100111 б) 11001110 в) 10101010 г) 01111110
ЗАДАНИЕ НА ДОМ
Учить:§ 2.10.1 (с.143-148)
Выполнить: №2.14 (с.147) и №2.15 (с.148)