210 likes | 626 Views
Представление чисел в формате с фиксированной запятой. 23 ноября. Изучаемые вопросы: Представление целых чисел в памяти компьютера. Представление отрицательных чисел в памяти компьютера. Размер ячейки и диапазон значений чисел. Особенности работы компьютера с целыми числами.
E N D
Представление чисел в формате с фиксированной запятой 23 ноября • Изучаемые вопросы: • Представление целых чисел в памяти компьютера. • Представление отрицательных чисел в памяти компьютера. • Размер ячейки и диапазон значений чисел. • Особенности работы компьютера с целыми числами.
ПРЕДСТАВЛЕНИЕ ЦЕЛЫХ ЧИСЕЛ В ФОРМАТЕ С ФИКСИРОВАННОЙ ЗАПЯТОЙ Целые числа в компьютере хранятся в памяти в формате с фиксированной запятой. • При хранении чисел в памяти в формате с фиксированной запятой каждому разряду ячейки памяти соответствует всегда один и тот же разряд числа, а запятая находится справа после младшего разряда, т.е. вне разрядной сетки. • Достоинства: • простота и наглядность представления чисел; • простота алгоритмов реализации арифметических операций (вычитание заменяется сложением). • Недостаток: • конечный диапазон представления величин, недостаточный для решения задач, в которых используются очень малые и/или очень большие числа. 1010=10102
ЦЕЛЫЕ НЕОТРИЦАТЕЛЬНЫЕ ЧИСЛА Для хранения целых неотрицательных чисел отводится одна ячейка памяти (8 битов). Минимальное число: Минимальное число равно 0. Максимальное число: 111111112 = 1000000002 -1 = 28–1 = 25510 Максимальное число равно 25510. Диапазон изменения целых неотрицательных чисел от 0 до255. Для n-разрядного представления максимальное целое неотрицательное число равно 2n –1.
ЦЕЛЫЕ ЧИСЛА СО ЗНАКОМ Для хранения целых чисел со знакомотводится две ячейки памяти (16 битов). Для хранения большихцелых чисел со знаком отводится четыре ячейки памяти (32 бита). Старший (левый) разряд отводится под знак числа: 0 – положительное число, 1– отрицательное число. Представление в компьютере положительных чисел с использованием формата «знак-величина» называетсяпрямымкодомчисла.
ЦЕЛЫЕ ЧИСЛА СО ЗНАКОМ • Для n-разрядного представления со знаком (с учетом выделения одного разряда на знак): • максимальное положительное число равно 2n-1–1, • минимальное отрицательное число равно –2n-1 А10 = 215 – 1 = 3276710 А10 = – 215 = – 3276810 Диапазон хранения целых чисел со знаком от – 32 768 до 32 767. Диапазон хранения больших целых чисел со знаком от – 2 147 483 648 до 2 147 483 647. А10 = 231 – 1 = 2 147 483 647 10 А10 = – 231 = – 2 147 483 648 10
ЦЕЛЫЕ ЧИСЛА СО ЗНАКОМ 3+(-3) = 0 ≠ 0
ДОПОЛНИТЕЛЬНЫЙ КОД Для представления отрицательных чисел используется дополнительный код, позволяющий заменить арифметическую операцию вычитания операцией сложения. Дополнительный код отрицательного числа А, хранящегося в n ячейках, равен 2n - |А|. Дополнительный код представляет собой дополнение модуля числа А до 0. 2n - |А| + |А| = 0 Это равенство тождественно справедливо, так как в компьютерной n-разрядной арифметике 2n≡ 0. Действительно, двоичная запись числа 2nсостоит из одной единицы и n нулей, а в n-разрядную ячейку может уместиться только n младших разрядов, т.е. n нулей. 28=100000000
ДОПОЛНИТЕЛЬНЫЙ КОД Найдём дополнительный код отрицательного числа –200210 при n=16: 2n - |А| 2n - |А| +|А| = 0 2n - |А| |А| 1
АЛГОРИТМ ПОЛУЧЕНИЯ ДОПОЛНИТЕЛЬНОГО КОДА • Алгоритм получения дополнительного кода отрицательного числа: • Модуль числа записать прямым кодом в n двоичных разрядах. • Получить обратный код числа, для этого значения всех битов инвертировать. • К полученному обратному коду прибавить единицу. Найдём дополнительный код отрицательного числа –200210 при n=16: +
ВЫПОЛНЕНИЕ АРИФМЕТИЧЕСКОГО ДЕЙСТВИЯ Выполнить арифметическое действие 2010 – 3010 в 16-разрядном компьютерном представлении. + 00000000000101002 11111111111000102 11111111111101102 + 2010 – 3010 11111111 111101102 Дополнительный код
ПЕРЕВОД ДОПОЛНИТЕЛЬНОГО КОДА В ДЕСЯТИЧНОЕ ЧИСЛО В 16-разрядном компьютерном представлении 2010 – 301011111111 111101102 • Переведем полученный дополнительный код в десятичное число: • Инвертируем дополнительный код: • 00000000 00001001 • 2. К полученному коду прибавим1 (получим модуль отрицательного числа): • 00000000 00001010 • 3. Переведем в десятичное число и припишем знак отрицательного числа: -10
ПЕРЕВОД ДОПОЛНИТЕЛЬНОГО КОДА В ДЕСЯТИЧНОЕ ЧИСЛО В 16-разрядном компьютерном представлении 2010 – 301011111111 111101102 • Переведем полученный дополнительный код в десятичное число: • Отнимем 1 от дополнительного кода: • 11111111 11110101 • 2. Инвертируем полученное число: • 00000000 00001010 • 3. Переведем в десятичное число и припишем знак отрицательного числа: -10 Почему не применяется данный метод перевода дополнительного кода в десятичное число?
ПРАКТИКУМ Для n-разрядного представления со знаком минимальное отрицательное число равно –2n-1 Задача. Найти минимальное отрицательное число в 8-разрядном компьютерном представлении • Переведем дополнительный код 1000000в десятичное число: • Инвертируем дополнительный код: 01111111 • К полученному коду прибавим1 (получим модуль отрицательного числа): 10000000 • Переведем в десятичное число и припишем знак отрицательного числа: -128
ПРАКТИКУМ Задача. Найти максимальное отрицательное число в 8-разрядном компьютерном представлении • Переведем дополнительный код 11111111в десятичное число: • Инвертируем дополнительный код: 00000000 • К полученному коду прибавим1 (получим модуль отрицательного числа): 00000001 • Переведем в десятичное число и припишем знак отрицательного числа: -1
ОСОБЕННОСТИ РАБОТЫ С ЦЕЛЫМИ ЧИСЛАМИ Выполняя на компьютере вычисления с целыми числами, нужно помнить об ограниченности диапазона допустимых значений. Выход результата за границы допустимого диапазона называется переполнением. Переполнение при вычислениях с целыми числами не вызывает прерывания работы процессора, но результаты могут оказаться неправильными.
ПРАКТИКУМ Задача. Компьютер работает только с целыми числами, представленными в однобайтовой ячейке памяти. Какое значение будет получено в результате вычисления значения арифметического выражения 100+39? Решение: Внутреннее представление числа 100: 01100100 00100111 Внутреннее представление числа 39: 10001011 Внутреннее представление суммы 100+39: Знаковый разряд равен 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)