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

advertisement
23 ноября
Представление чисел
в формате
с фиксированной запятой
Изучаемые вопросы:
• Представление целых чисел в памяти компьютера.
• Представление отрицательных чисел в памяти компьютера.
• Размер ячейки и диапазон значений чисел.
• Особенности работы компьютера с целыми числами.
ПРЕДСТАВЛЕНИЕ ЦЕЛЫХ ЧИСЕЛ В ФОРМАТЕ
С ФИКСИРОВАННОЙ ЗАПЯТОЙ
Целые числа в компьютере хранятся в памяти в формате
с фиксированной запятой.
При хранении чисел в памяти в формате с фиксированной запятой
каждому разряду ячейки памяти соответствует всегда один и тот же
разряд числа, а запятая находится справа после младшего разряда, т.е.
вне разрядной сетки.
1010=10102
0 0 0 0 1 0 1 0
Достоинства:
• простота и наглядность представления чисел;
• простота алгоритмов реализации арифметических операций
(вычитание заменяется сложением).
Недостаток:
• конечный диапазон представления величин, недостаточный для
решения задач, в которых используются очень малые и/или очень
большие числа.
ЦЕЛЫЕ НЕОТРИЦАТЕЛЬНЫЕ ЧИСЛА
Для хранения целых неотрицательных чисел отводится
одна ячейка памяти (8 битов).
Минимальное число:
0 0 0 0 0 0 0 0
Минимальное число равно 0.
Максимальное число:
1 1 1 1 1 1 1 1
111111112 = 1000000002 -1 = 28 – 1 = 25510
Максимальное число равно 25510.
Диапазон изменения целых неотрицательных чисел от 0 до 255.
Для n-разрядного представления максимальное целое
неотрицательное число равно 2n – 1.
ЦЕЛЫЕ ЧИСЛА СО ЗНАКОМ
Для хранения целых чисел со знаком отводится
две ячейки памяти (16 битов).
Для хранения больших целых чисел со знаком отводится
четыре ячейки памяти (32 бита).
Старший (левый) разряд отводится под знак числа:
0 – положительное число,
1 – отрицательное число.
0 0 1 1 1 1 1 1
1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1
Представление в компьютере положительных чисел
с использованием формата «знак-величина» называется
прямым кодом числа.
ЦЕЛЫЕ ЧИСЛА СО ЗНАКОМ
Для n-разрядного представления со знаком (с учетом выделения
одного разряда на знак):
максимальное положительное число равно 2n-1 –
минимальное отрицательное число равно
А10 = 215 – 1 = 3276710
А10 = – 215 = – 3276810
А10 = 231 – 1 = 2 147 483 647 10
А10 = – 231 = – 2 147 483 648 10
1,
– 2n-1
Диапазон хранения
целых чисел со знаком
от – 32 768 до 32 767.
Диапазон хранения
больших целых чисел со знаком
от – 2 147 483 648 до 2 147 483 647.
ЦЕЛЫЕ ЧИСЛА СО ЗНАКОМ
3 +(-3) = 0
0 0 0 0 0 0 1 1
1 0 0 0 0 0 1 1
1 0 0 0 0 1 1 0 ≠0
ДОПОЛНИТЕЛЬНЫЙ КОД
Для представления отрицательных чисел используется
дополнительный код, позволяющий заменить арифметическую
операцию вычитания операцией сложения.
Дополнительный код отрицательного числа А,
хранящегося в n ячейках, равен 2n - |А|.
2n
- |А| + |А| = 0
Дополнительный код представляет собой
дополнение модуля числа А до 0.
Это равенство тождественно справедливо, так как в компьютерной
n-разрядной арифметике 2n ≡ 0.
Действительно, двоичная запись числа 2n состоит из одной единицы и n
нулей, а в n-разрядную ячейку может уместиться только n младших
разрядов, т.е. n нулей.
28=100000000
0 0 0 0 0 0 0 0
ДОПОЛНИТЕЛЬНЫЙ КОД
Найдём дополнительный код отрицательного числа –200210 при n=16:
2n - |А|
2n
|А|
2n - |А|
216 =
200210 =
216- |200210| =
1 00000000 000000002
00000111 110100102
11111000 001011102
6553610
200210
6353410
2n - |А| + |А| = 0
2n - |А|
|А|
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
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
АЛГОРИТМ ПОЛУЧЕНИЯ ДОПОЛНИТЕЛЬНОГО КОДА
Алгоритм получения дополнительного кода отрицательного
числа:
1. Модуль числа записать прямым кодом в n двоичных
разрядах.
2. Получить обратный код числа, для этого значения
всех битов инвертировать.
3. К полученному обратному коду прибавить единицу.
Найдём дополнительный код отрицательного числа –200210 при
n=16:
Прямой код
|-200210|
00000111 110100102
Обратный код
Инвертирование
11111000 001011012
Прибавление единицы
Дополнительный код
+
11111000 001011012
00000000 000000012
11111000 001011102
ВЫПОЛНЕНИЕ АРИФМЕТИЧЕСКОГО ДЕЙСТВИЯ
Выполнить арифметическое действие 2010 – 3010 в 16-разрядном
компьютерном представлении.
Десятичное
число
Прямой код
Обратный код
Дополнительный код
11111111 111000012
11111111 111000012
+
00000000 000000012
11111111 111000102
20 00000000 000101002
-30 00000000 000111102
00000000 000101002
+
11111111 111000102
11111111 111101102
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
Почему не применяется данный метод перевода
дополнительного кода в десятичное число?
ПРАКТИКУМ
Для n-разрядного представления со знаком минимальное отрицательное число равно –2n-1
Задача. Найти минимальное отрицательное число в 8-разрядном
компьютерном представлении
1 0 0 0 0 0 0 0
1000000 в десятичное число:
Инвертируем дополнительный код: 01111111
Переведем дополнительный код
1.
2. К полученному коду прибавим 1 (получим модуль отрицательного
числа): 10000000
3. Переведем в десятичное число и припишем знак отрицательного
числа:
-128
ПРАКТИКУМ
Задача. Найти максимальное отрицательное число в 8-разрядном
компьютерном представлении
1 1 1 1 1 1 1 1
11111111 в десятичное число:
Инвертируем дополнительный код: 00000000
Переведем дополнительный код
1.
2. К полученному коду прибавим 1 (получим модуль отрицательного
числа): 00000001
3. Переведем в десятичное число и припишем знак отрицательного
числа:
-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)
Download