Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Представление целых чисел в ЭВМ




В компьютерах для кодирования целых чисел используется двоичная система счисления. Одна двоичная цифра называется бит. Для хранения чисел используется фиксированное число бит: 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.

 


Поделиться:

Дата добавления: 2015-09-15; просмотров: 61; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты