Главная Случайная страница


Категории:

ДомЗдоровьеЗоологияИнформатикаИскусствоИскусствоКомпьютерыКулинарияМаркетингМатематикаМедицинаМенеджментОбразованиеПедагогикаПитомцыПрограммированиеПроизводствоПромышленностьПсихологияРазноеРелигияСоциологияСпортСтатистикаТранспортФизикаФилософияФинансыХимияХоббиЭкологияЭкономикаЭлектроника






Действия с машинными кодами чисел.

Напомним, что машинные коды чисел призваны заменить отсутствующую в компьютере операцию вычитания (и деления тоже) на операцию сложения. Разберем примеры сложения машинных кодов различных чисел.

Действия над числами, представленных в естественной форме

(для компьютера - это целые числа)

При сложении кодов целых чисел нужно учитывать следующие положения.

1. Числа хранятся в дополнительном коде.

2. В сумматоре числа складываются вместе со знаками, при этом образуется знак результата.

3. При сложении чисел с разными знаками единица переноса из знакового (старшего) разряда стирается.

Пример. Дано А=254, В=175. Найти сумму чисел при разных знаках слагаемых в 16-разрядном формате.

А = 25410 = FE16 = 111111102

В = 17510 = AF16 = 101011112

Машинные коды этих чисел с разными знаками представим в таблицах.

  -254
ПК 0 000000011111110 1 000000011111110
ОК 1 111111100000001
ДК 1 111111100000010

 

  -175
ПК 0 000000010101111 1 000000010101111
ОК 1 111111101010000
ДК 1 111111101010001

Выполним действия (во всех случаях выполняется сложение в дополнительном коде!).

С1 = А + В

А  
В  
С1  

Проверка: С1 = 1101011012 = 28+27+25+23+22+20 = 256+128+32+8+4+1 = 42910

С2 = А - В = А + (-В)

А  
 
С2

Перенос из знакового разряда исключаем.

Проверка: С2 = 10011112 = 26+23+22+21+20 = 64+8+4+2+1 = 7910

С3 = В - А = В + (-А)

В  
 
С3  

Число С3 отрицательное в дополнительном коде.

Проверка: получим прямой код числа С3.

ДК
ОК
ПК

С3 = -10011112 = -(26+23+22+21+20 )= -(64+8+4+2+1) = -7910

С4 = -А - В = (-А) + (-В)

 
 
С4

Перенос из знакового разряда исключаем.

Число С4 отрицательное в дополнительном коде.

Проверка: получим прямой код числа С4.

ДК
ОК
ПК

С4 = -1101011012 =-( 28+27+25+23+22+20 )=-( 256+128+32+8+4+1) =- 42910

Действия над числами, представленными в нормальной форме.

При сложении чисел, представленных в нормальной форме, необходимо учитывать:

1. Числа в нормальной форме хранятся в памяти в прямом коде с нормализованными мантиссами.

2. Сложение кодов чисел производится путем сложения мантисс только при одинаковых порядках (характеристиках) слагаемых. За общий выбирается наибольший порядок. Выравнивание порядков слагаемых осуществляется изменением мантиссы меньшего числа.

3. Результаты в прямом коде нормализуются.

Пример. Дано А = 15 7/8 ; B = 5/16. Найти сумму чисел при разных знаках слагаемых.

Вычисления с числами в нормальной форме удобнее выполнять в шестнадцатеричной системе счисления, разряды чисел 4 байта (32 двоичных разряда).

A = F,E16; B = 0,516

1. Нормализация мантисс и определение характеристик:

mA = 0,FE PxA = 40 + 1 = 41

mB = 0,5 PxB = 40 + 0 = 40

2. Выравнивание характеристик:

PxB = 41 => mB = 0,05

3. Дополнительные коды мантисс отрицательных чисел.

-mA = 1.00 - 0,FE = 0,02

-mB = 1.00 - 0,05 = 0,FB

4. Коды чисел:

а) в шестнадцатеричном представлении

A = 41FE0000

B = 41050000

-A = C1020000

-B = C1FB0000

б) в двоичном представлении

A = 0 1000001 1111 1110 0000 0000 0000 0000

B = 0 1000001 0000 0101 0000 0000 0000 0000

-A = 1 1000001 1111 1110 0000 0000 0000 0000

-B = 1 1000001 0000 0101 0000 0000 0000 0000

Примечание: для записи отрицательных кодов чисел удобнее сначала записать код в двоичном представлении, затем преобразовать его в шестнадцатеричное.

Важно: помните, что числа в нормальной форме представления хранятся в прямом коде!

4. Выполнение действий.

C1 = A + B

mA   F E
mB  
mC1

Так как слагаемые с одинаковым знаком, то перенос единицы из старшего разряды мантиссы означает нарушение нормализации мантиссы влево.

Нормализация мантиссы: mC1 = 0,103 PC1 = 41 + 1 = 42

Код числа C1 = 42103000 или 0 1000010 0001 0000 0011 0000 0000 0000

Проверка: С1 = 10,316 = 16 3/16 10

C2 = -A - B = - (A + B)

Так как числа хранятся в прямом коде, нет необходимости выполнять двойные преобразования, можно взять C2 = -C1.

Код числа С2 = 1 1000010 0001 0000 0011 0000 0000 0000 или C2103000

С2 = -10,316 = -16 3/16 10

C3 = A - B

mA   F E
-mB   F B
mC3 F

Так как слагаемые с разными знаками, то единица переноса из старшего разряда является признаком положительного результата и стирается.

Код числа С3 = 41F90000 или 0 1000001 1111 1001 0000 0000 0000 0000

С2 = F,916 = 15 9/19 10

C4 = B - A

-mA  
mB  
-mC4  

Так как слагаемые с разными знаками и отсутствует перенос из старшего разряда мантиссы, то результат отрицательный в дополнительном коде и должен быть преобразован в прямой код.

mC4 = 1,00 - 0,07 = 0,F9 PmC4 = 41

Код числа С4 = C1F90000 или 1 1000001 1111 1001 0000 0000 0000 0000

C4 = -F,916 = -15 9/19 10

Вопросы для контроля.

1. Что такое разрядная сетка или формат данных?

2. Какие формы записи чисел существуют в информатике?

3. Какие форматы представления чисел используются для различных форм записи?

4. Что такое машинные коды чисел? Для каких целей они вводятся в информатике?

5. Какова длина машинного слова для персональных компьютеров?

6. Как в компьютере учитываются знаки чисел?

7. Правила образования машинных кодов чисел?

8. В каком виде хранятся в компьютере целые числа (формат и форма)?

9. В каком виде хранятся в компьютере вещественны числа (формат и форма)?

10. Что следует помнить при сложении кодов чисел, представленных в естественной форме записи?

11. Каковы правила выполнения операций с числами, представленных в нормальной форме записи.

Упражнение.

1. Привести следующие десятичные числа к нормальной форме записи: а) 234,13; б)0,0005; в)1234590,00001; г)1,0002; д)100.

2. Получить машинные коды для следующих десятичных чисел: а)123; б) -141; в)256,125; г)-321 3/8; д)89 15/16; е) 99; ж)2,5; з) 255 1/2

Представление целых чисел в компьютере.

 

Целые числа являются простейшими числовыми данными, с которыми оперирует ЭВМ. Для целых чисел существуют два представления: беззнаковое (только для неотрицательных целых чисел) и со знаком. Очевидно, что отрицательные числа можно представлять только в знаковом виде. Целые числа в компьютере хранятся в формате с фиксированной запятой.

 

Представление целых чисел в беззнаковых целых типах.


Для беззнакового представления все разряды ячейки отводятся под представление самого числа. Например, в байте (8 бит) можно представить беззнаковые числа от 0 до 255. Поэтому, если известно, что числовая величина является неотрицательной, то выгоднее рассматривать её как беззнаковую.

 

Представление целых чисел в знаковых целых типах.


Для представления со знаком самый старший (левый) бит отводится под знак числа, остальные разряды - под само число. Если число положительное, то в знаковый разряд помещается 0, если отрицательное - 1. Например, в байте можно представить знаковые числа от -128 до 127.

 

Прямой код числа.


Представление числа в привычной форме "знак"-"величина", при которой старший разряд ячейки отводится под знак, а остальные - под запись числа в двоичной системе, называется прямым кодом двоичного числа. Например, прямой код двоичных чисел 1001 и -1001 для 8-разрядной ячейки равен 00001001 и 10001001 соответственно.
Положительные числа в ЭВМ всегда представляются с помощью прямого кода. Прямой код числа полностью совпадает с записью самого числа в ячейке машины. Прямой код отрицательного числа отличается от прямого кода соответствующего положительного числа лишь содержимым знакового разряда. Но отрицательные целые числа не представляются в ЭВМ с помощью прямого кода, для их представления используется так называемый дополнительный код.

 

Дополнительный код числа.


Дополнительный код положительного числа равен прямому коду этого числа. Дополнительный код отрицательного числа m равен 2k-|m|, где k - количество разрядов в ячейке.
Как уже было сказано, при представлении неотрицательных чисел в беззнаковом формате все разряды ячейки отводятся под само число. Например, запись числа 243=11110011 в одном байте при беззнаковом представлении будет выглядеть следующим образом:

 


При представлении целых чисел со знаком старший (левый) разряд отводится под знак числа, и под собственно число остаётся на один разряд меньше. Поэтому, если приведённое выше состояние ячейки рассматривать как запись целого числа со знаком, то для компьютера в этой ячейке записано число -13 (243+13=256=28).
Но если это же отрицательное число записать в ячейку из 16-ти разрядов, то содержимое ячейки будет следующим:

 

Знаковый разряд
Возникает вопрос: с какой целью отрицательные числа записываются в виде дополнительного кода и как получить дополнительный код отрицательного числа?
Дополнительный код используется для упрощения выполнения арифметических операций. Если бы вычислительная машина работала с прямыми кодами положительных и отрицательных чисел, то при выполнении арифметических операций следовало бы выполнять ряд дополнительных действий. Например, при сложении нужно было бы проверять знаки обоих операндов и определять знак результата. Если знаки одинаковые, то вычисляется сумма операндов и ей присваивается тот же знак. Если знаки разные, то из большего по абсолютной величине числа вычитается меньшее и результату присваивается знак большего числа. То есть при таком представлении чисел (в виде только прямого кода) операция сложения реализуется через достаточно сложный алгоритм. Если же отрицательные числа представлять в виде дополнительного кода, то операция сложения, в том числе и разного знака, сводится к из поразрядному сложению.

Для компьютерного представления целых чисел обычно используется один, два или четыре байта, то есть ячейка памяти будет состоять из восьми, шестнадцати или тридцати двух разрядов соответственно.

 

Последнее изменение этой страницы: 2016-07-22

lectmania.ru. Все права принадлежат авторам данных материалов. В случае нарушения авторского права напишите нам сюда...