КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Представление целых чисел в ЭВМВ компьютерах для кодирования целых чисел используется двоичная система счисления. Одна двоичная цифра называется бит. Для хранения чисел используется фиксированное число бит: 8, 16 или 32. В дальнейшем будем считать, что размер ячейки памяти равен 16 битам. Для того чтобы отличать отрицательные числа от положительных, самый правый разряд отводится под знак числа – он называется знаковым. Для положительных чисел знаковый разряд равен 0, для отрицательных равен 1. Этот разряд отделяется от других двоеточием. 4510 – десятичное число, 01011012 – число “45” в двоичной системе счисления, [0:000000000101101]пр – “45” в прямом коде, знаковый бит равен 0. 4510 = 01011012 = [0:000000000101101]пр. -01011012 – число “-45” в двоичной системе счисления, [1:000000000101101]пр – “-45” в прямом коде, знаковый бит равен 1. -4510 = -01011012 = [1:000000000101101]пр. Примечание: целые положительные числа всегда представляются в прямом коде. Однако результат действий с отрицательными числами в прямом коде будет неверный, поэтому для записи отрицательных чисел используется другой код – дополнительный. При переводе отрицательных чисел из прямого в дополнительный используется промежуточный код, который называется обратным. Правило перевода отрицательного числа из прямого кода в обратный код: для того чтобы представить отрицательное число в обратном коде, надо все биты числа в прямом коде, кроме знакового, заменить на противоположные (0 на 1, 1 на 0). Правило перевода числа из обратного кода в дополнительный код: для того чтобы представить отрицательное число в дополнительном коде, надо к обратному коду этого числа прибавить единицу. Например: -01000112 – число “-35” в двоичной системе счисления, [1:000000000100011]пр – “-35” в прямом коде, знаковый бит равен 1. [1:111111111011100]обр – “-35” в обратном коде, [1:111111111011101]доп – “-35” в дополнительном коде. -3510=-01000112=[1:000000000100011]пр=[1:111111111011100]обр= [1:111111111011101]доп. Примечание: целые отрицательные числа всегда представляются в дополнительном коде. Для того, чтобы узнать количественное значение отрицательного числа, его необходимо перевести в прямой код. Правило перевода отрицательного числа из дополнительного кода в прямой код: для того чтобы перевести отрицательное число из дополнительного кода в прямой, надо от дополнительного кода этого числа отнять 1, а потом заменить все биты, кроме знакового, на противоположные. [1:111111101001100]доп. = = [1:111111101001011]обр = = [1:000000010110100]пр = = -10110100 = -18010. Действия над целыми числами. Разбор заданий При выполнении действий над целыми числами необходимо помнить, что они выполняются по правилам системы счисления в которой эти числа записаны. Например: A10 = 43, B10 = 27, Найти C = A + B, D = -A - B, E = A - B, F = - A + B. 1. Представление чисел A и B в двоичной системе счисления в прямом коде: 4310 = 1010112, A = [0:000000000101011]пр, 2710 = 110112, B = [0:000000000011011]пр, 2. Представление чисел -A и -B в двоичной системе счисления в дополнительном коде: -A = [1:000000000101011]пр = [1:111111111010100]обр = [1:111111111010101]доп -B = [1:000000000011011] пр = [1:111111111100100]обр = [1:111111111100101]доп. 3. Выполнение действий (знаковый бит участвует в выполнении сложения): C = A + B A = [0:000000000101011] пр, B = [0:000000000011011] пр, C = [0:000000001000110] пр, С = 10001102. Проверим: С = 43 + 27 = 7010, С = 10001102 = 7010. D = -A - B = - (A + B), A = [0:000000000101011] пр, B = [0:000000000011011] пр, D* = [0:000000001000110] пр, D = -D* = -10001102. Проверим: D = -43 - 27 = -7010, D = -10001102 = -7010. E = A - B, A = [0:000000000101011] пр, -B = [1:111111111100101] доп, E = [0:000000000010000] пр, E = 100002. Так, знаковый бит результата равен 0, значит результат положительный в прямом коде. Единица переноса из знакового бита теряется. Проверим: E = 43 - 27 = 1610, E = 100002 = 1610. F = - A + B, -A = [1:111111111010101] доп, B = [0:000000000011011] пр, F = [1:111111111110000] доп, Так знаковый бит результата равен 1, значит результат отрицательный в дополнительном коде. Необходимо представить результат в прямом коде. F = [1:111111111110000] доп = [1:000000000001111] обр = [1:000000000010000] пр. F = -100002. Проверим: F = -43 + 27 = -1610, F = -100002 = -1610.
|