Машинные коды чисел В компьютере все арифметические операции над числами сводятся к операциям арифметического сложения и сдвигу кодов.
Прямой машинный код Прямой код целого числа полностью совпадает с записью самого числа в разрядной сетке компьютера. Прямой код целого числа полностью совпадает с записью самого числа в разрядной сетке компьютера. Прямой код отрицательного целого числа отличается от прямого кода соответствующего положительного числа содержимым знакового разряда Пример. Прямой код чисел Х= и Y= в восьмиразрядной сетке имеет вид: [Xпк]= [Yпк]=
Два представления нуля В системе прямых кодов существует два различных представления ноля: – положительный 0; – отрицательный 0. Оба представления совершенно равноправны.
Дополнительныйобратный коды Дополнительный и обратный коды Замена операции вычитания (алгебраического сложения) на арифметическое сложение в компьютере осуществляется с помощью обратного и дополнительного кодов. Дополнительный и обратный коды положительного числасовпадают с прямым кодом. Дополнительный и обратный коды положительного числа совпадают с прямым кодом.
Дополнительный код отрицательного числа Пример. А=95 10, В=43 10, n=2. Найти С=А-В. [-B дк ]=100 – 43 = 57 С = 95 + [-B дк ] – 100 = – 100 = 152 – 100 = 52 Единицу в старшем разряде суммы можно просто зачеркивать, что равносильно сдвигу кода.
Дополнительный код отрицательного числа Дополнительный код обратного кода Дополнительный код получается путём добавления единицы к младшему разряду обратного кода. В дополнительном коде ноль имеет единственное представление. Для данной длины разрядной сетки дополнительным кодом представляется на единицу больше отрицательных чисел, чем положительных.
1.Модуль числа представить прямым кодом в k двоичных разрядах. 2.Значения всех бит, кроме знакового, инвертировать: все ноли заменить на единицы, а единицы на ноли (таким образом получается k-разрядный обратный код исходного числа); 3.К полученному обратному коду, прибавить единицу к младшему разряду с учетом переносов. Алгоритм получения дополнительного кода отрицательного числа.
Примеры. 1. Дано отрицательное целое десятичное число M=-20. Представьте число в машинном коде в 16- разрядной сетке в двоичной и 16-ричной системах счисления. М=-20= [Mпк] 2 = [M ок] 2 = [M дк] 2 = [M дк] 16 =FFEC
2. Дано целое число в виде 16-ричного двоичного машинного кода. Определите десятичное значение данного числа: K a =FFD4 Первая цифра F, следовательно, число отрицательное и хранится в компьютере в форме дополнительного машинного кода. FFD4 16 = [ дк ] [ ок ] – обратный код числа [K a ] ПК =[ пк ] – прямой двоичный код числа Тогда десятичное число а = = - (32+8+4) = -44 – десятичное число
2 способ: через 16-ричную систему счисления K a =FFD4 < 0, следовательно число а хранится в компьютере в дополнительном коде. Перейдем от дополнительного к прямому машинному коду: дополнительный код для отрицательного числа Так как дополнительный код для отрицательного числа равен дополнению его величины до числа, возникающего при переполнении разрядной сетки q n, то [K a ] ПК = FFD4 16 = 002С 16 Тогда десятичное число а = - 2С 16 = - ( ) = = - 44
Действия над машинными кодами целых чисел Дано: десятичные числа А= 34 и В = 30 Найти: А+В, А – В, В – А в двоичных машинных кодах в 8 разрядной сетке. [A пк ] = [А ок ] = [А дк ] = [-A пк ] = [-А ок ] = [-А дк ] = [-B пк ] = [-В ок ] = [-В дк ] = [В пк ] = [В ок ] = [В дк ] =
Действия над машинными кодами чисел с фиксированной точкой ( в 16-ричной системе счисления) Дано: десятичные числа А= 34 и В = 30 Найти: А+В, А – В, В – А в 16-ричных машинных кодах в 16 разрядной сетке. 1) А=34=22 16 В=30=1E 16 [K A ] пк = [K B ] ПК =001E 16 K A + K B = E = A + B = = 64 2) [K -B ] ПК =101E 16 [K -B ] ДК = E 16 = FFE2 16 K A + K B = FFE2 = А - В = = 4
Представлениевещественных чиселвкомпьютере Представление вещественных чисел в компьютере Любое число в экспоненциальной (нормальной) форме представляется в виде: A = m A.q p Нормализованная мантисса:
В современных компьютерах машинная форма числа хранит не сам порядок, а его смещенное значение – характеристику числа. Это сделано для того, чтобы не хранить знак порядка и, значит, облегчить действия над порядками; увеличить диапазон представляемых чисел … Знак мантиссы характеристикамантисса Мр = р + 64 (10 –ая с/c) Мр = р (2 –ая с/c) Мр = р + 40 (16 –ая с/c) Мр – машинный порядок р –математический порядок
Нормализованная мантисса всегда имеет целый разряд 0 и, следовательно, этот 0 в памяти компьютера не хранится, а только подразумевается. Это полезное техническое решение позволяет увеличить количество цифр и, следовательно, точность вычислений. Нормализованная мантисса числа *10 2
Для записи внутреннего представления вещественного числа необходимо: 1)Перевести модуль данного числа в 2-ую с.с. ( 16-ую с.с.), 2)Нормализовать двоичное число (16-ричное число), 3)Найти машинный порядок в 2-ой (16-ой с.с.), 4)Учитывая знак числа, выписать его представление в 32 разрядной сетке
Примеры Вещественные числа представить как машинные коды чисел с плавающей точкой в 32-разрядной сетке в 16с/с: а) А=32008,5б) В= ,5 в) С= 15г) D= Найдем нормализованные мантиссы и характеристики этих чисел: а) А=32008,5=7D08,8 16 =0,7D m A =0,7D088p xA =4+40=44 16 = Знак- 0 Характеристика Дробная часть мантиссы K A = = = 447D > 0
б) B= ,5= -7D08,8 16 = - 0,7D m B = -0,7D088p xB =4+40=44 16 = Знак- 1 Характеристика Дробная часть мантиссы K B = = = C47D < 0
в) С= 15 =F,E 16 m c =0,FE 16 p xA =40+1=41 16 Знак- 0 Характеристика Дробная часть мантиссы K C = = 41FE > в) D= - = - 0,9 16 mB=0,9pxB=40+0=40 Знак- 1 Характеристика Дробная часть мантиссы K D = = C <
Действия над числами, представленными в экспоненциальной форме 1.Числа в экспоненциальной форме хранятся в памяти в прямом коде с нормализованными мантиссами. 2.Сложение кодов производится путём сложения мантисс только при одинаковых порядках (характеристиках) слагаемых. За общий выбирается наибольший порядок. 3.Алгоритмы операции алгебраического сложения после выравнивания характеристик зависят от знаков слагаемых. 4.Результаты в прямом коде нормализуются.
Примеры Выполнить операцию сложения машинных кодов чисел А и В с плавающей точкой в 32-хразрядной сетке. В качестве ответа записать код результата (в 2-ой и 16-ой с/с) и соответствующее этому коду десятичное число 1)K А =43.F34000K В = C1.A13000 a)m A =00.F34m B =00.A13 P Ax =43P Bx =41 => P =2 => m B =00.00A13 – ПК _ A13 FF.FF5ED b)m A +m B = 00.F34 FF.FF5ED 100.F29ED > 0 => m A+B = 00.F29ED
P A+B = 3A+B = 0.F29ED = F29,ED 16 = /16+13/256 = /256 K A+B = = = 43.F29ED0