Представление чисел в компьютере Представление чисел в формате с фиксированной запятой • Для хранения целых неотрицательных чисел отводится одна ячейка памяти (8 бит). • Минимальное число 00000000 • Число в n-разрядном представлении 2n-1 • Максимальное число 28-1=25510 Хранение целых чисел со знаком • Для хранения отводится 2 ячейки памяти (16 бит) • Старший (левый) разряд отводится под знак. • В положительном числе в знаковый разряд записывается 0 • В отрицательном числе 1 Прямой код числа Это -представление в компьютере положительных чисел с использованием формата «знак – величина». Пример: 200210=111110100102 В 16-т и разрядном предст авлении 0 0 0 0 0 1 1 1 1 1 0 1 0 0 1 0 При представлении целых чисел в n-разрядном представлении со знаком максимальное положительное число А=2n-1 - 1 Упражнение 1 • Определить максимальное положительное число, которое может хранится в оперативной памяти в формате целое число со знаком. Решение А10=215 – 1 = 3276710 Дополнительный код • Используется для представления отрицательных чисел • Позволяет заменить арифметическую операцию вычитания операцией сложения, что упрощает работу процессора и увеличивает его быстродействие. • Дополнительный код отрицательного числа А, хранящегося в n – ячейках, равен 2n-|A| Упражнение 2 Записать дополнительный код отрицательного числа -2002 для 16 – разрядного компьютерного представления. Решение Проведем вычисления в соответствии с определением дополнительного кода. 216=100000000000000002=6553610 200210=00000111110100102=200210 216 - |200210|=11111000001011102=6353410 Проверка Проведем проверку в 10-ой системе счисления: Дополнительный код 6353410 в сумме с модулем 200210 равно 6553610. Алгоритм определения дополнительного кода числа 1. Модуль числа записать прямым кодом в n- двоичных разрядах; 2. Получить обратный код числа, для этого значения всех бит инвертировать; 3. К полученному обратному коду добавит единицу. Упражнение 3 Записать дополнительный код отрицательного числа -2002 для 16-разрядного компьютерного представления с использованием алгоритма. Решение Прямой код |-200210| 00000111110100102 Обратный код Инвертирование 11111000001011012 Прибавление 1 11111000001011012 +00000000000000012 Дополнитель ный код 11111000001011102 Упражнение 4 Выполнить арифметическое действие 300010 – 500010 в 16-разрядном компьютерном представлении. Решение Представим положительное число в прямом, а отрицательное в обратном коде: Десятичное число Прямой код 3000 0000101110111000 -5000 0001001110001000 Обратный код Дополнительный код 1110110001110111 1110110001110111 +0000000000000001 1110110001111000 Сложим прямой код положительного числа с дополнительным кодом отрицательного числа. Получим результат в дополнительном коде: 30005000 1111100000110000 Переведем полученный дополнительный код в десятичное число: 1) Инвертируем дополнительный код: 0000011111001111; 2) Прибавим к полученному коду 1 и получим модуль отрицательного числа: 0000011111001111+0000000000000001= 0000011111010000 3) Переведем в десятичное число и припишем знак отрицательного числа: -2000 Представление чисел в формате с плавающей запятой. • Вещественные числа хранятся и обрабатываются в компьютере в формате с плавающей запятой. • Формат чисел с плавающей запятой базируется на экспоненциальной форме записи. Экспоненциальная форма записи числа A=m*qn, m- мантисса числа; q – основание системы счисления; n- порядок числа. Мантисса отвечает условию: 1/n<=|m|<1. Это означает, что мантисса должна быть правильной дробью и иметь после запятой цифру отличную от 0. Упражнение 5 Преобразуйте десятичное число 888,888 в экспоненциальную форму с нормализованной мантиссой. Решение m=0,888888 Порядок n=3 888,888=0,888888*103 Упражнение 6 Произвести сложение чисел 0,1*23 и 0,1*25 Решение Произведем выравнивание порядков и сложение мантисс: 0,001*25 + 0,100*25 -----------0,101*25 Упражнение 7 Произвести умножение чисел 0,1*23 и 0,1*25 в формате с плавающей запятой. Решение 0,1*0,1*2(3+5)=0,01*28=0,1*27