Лекции.Орг


Поиск:




Категории:

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

 

 

 

 


Правила выполнения арифметических операций в двоичной системе

Перевод числа из двоичной системы в десятичную

Перевод числа из двоичной системы в десятичную можно осуществлять для целой и дробной частей числа по одному алгоритму путем вычисления суммы произведений цифры двоичного числа на вес ее знакоместа:

111000112=1*27+1*26+1*25+0*24+0*23+0*22+1*21+1*20=128+64+32+2+1=22710

0,101000112=1*2-1+0*2-2+1*2-3+0*2-4+0*2-5++0*2-6+1*2-7+1*2-8=0.5+0.125+0.0078+0.0039=0.6367

 

Перевод числа из десятичной системы в двоичную

Перевод числа из десятичной системы в двоичную осуществляется отдельно для целой и дробной частей числа по следующим алгоритмам:

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

перевести число 227 в двоичную форму:

227:2=113 (записываем в результат остаток от деления 1), 113:2=56 (записываем в результат остаток от деления 1), 56:2=28 (записываем в результат остаток от деления 0), 28:2=14 (записываем в результат остаток от деления 0), 14:2=7 (записываем в результат остаток от деления 0), 7:2=3 (записываем в результат остаток от деления 1), 3:2=1 (записываем в результат остаток от деления 1), записываем в результат последнее частное – 1. Итого получаем: 22710=111000112. Проверим обратным переводом:

1*20+1*21+0*22+0*23+0*24+1*25+1*26+1*27=1+2+32+64+128=227

б) десятичная дробь последовательно умножается на основание 2, причем сразу после каждой операции умножения полученная целая часть записывается в результат и в дальнейшем умножении не участвует (отбрасывается). Количество операций умножения зависит от требуемой точности, например:

переведем в двоичную форму число 0.64:

0.64*2=1.28 (отбрасываем 1 и записываем в результат 1)

0.28*2=0.56 (записываем в результат 0)

0.56*2=1.12 (отбрасываем 1 и записываем в результат 1)

0.12*2=0.24 (записываем в результат 0)

0.24*2=0.48 (записываем в результат 0)

0.48*2=0.96 (записываем в результат 0)

0.96*2=1.82 (записываем в результат 1)

Итого: 0.6410=0.10100012

Проверим обратным переводом:

1*2-1+0*2-2+1*2-3+0*2-4+0*2-5+0*2-6+1*2-7 = 0.5*0+0.125+0+0+0+0.0078=0.6328

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

Следует иметь в виду, что в памяти ЭВМ двоичные числа хранятся в регистрах, состоящих из 8 ячеек, т.е. минимальное двоичное число, которое можно разместить в памяти, должно быть восьмиразрядным. При этом в незаполненных ячейках регистра (в старших разрядах) записываются нули.

В отличие от десятичной системы в двоичной системе счисления отсутствуют специальные символы, обозначающие знак числа: положительный (+) или отрицательный (-), поэтому для представления двоичных отрицательных чисел используются следующие две формы.

Форма значения со знаком – старший (левый) разряд метится как знаковый и содержит информацию только о знаке числа:

1 – число отрицательное, 0 – число положительное.

Остальные разряды отводятся под абсолютную величину числа.

510 = 0000 01012; -510=1000 01012.

Устройство компьютера выполняется таким образом, чтобы отрицательные числа были представлены в дополнительном коде, поскольку это дает существенную экономию времени при выполнении с ними арифметических операций.

Форма обратного дополнительного кода, перевод в которую производится по следующему алгоритму:

1) Отбросить знаковый разряд;

2) инвертировать все разряды числа;

3) прибавить единицу к полученному коду;

4) восстановить единицу в знаковом разряде.
Например:

Преобразование числа -510

Записываем в двоичном виде: 1000 0101; отбрасываем знаковый разряд: 000 0101; инвертируем все разряды: 111 1010; прибавляем единицу: 111 1010 + 1 = 111 1011; восстанавливаем единицу в знаковом разряде: 1111 1011. Итого -510 в обратном дополнительном коде записывается как 1111 1011.

Правила выполнения арифметических операций в двоичной системе

Сложение. Операция сложения выполняется так же, как и в десятичной системе. Переполнение разряда приводит к появлению единицы в следующем разряде:

0+0=0, 0+1=1, 1+1=10;

+ 111011

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

15-8 =15+(-8).

Правила вычитания в двоичной системе. Алгоритм операции вычитания путем сложения дополнительных кодов:

1) преобразовать отрицательное число из формы со знаком в дополнительный код;

2) выполнить операцию двоичного сложения над всеми разрядами,
включая знаковый, игнорируя единицу переноса из самого высокого
разряда;

3) при равенстве единице знакового разряда суммы, что означает
получение отрицательного результата в форме дополнительного кода,
необходимо перевести результат в знаковую форму (используя алгоритм перевода в обратную форму).

Например, выполним действие 13-15=13+(-15)

1. Переводим -15 в форму дополнительного кода:

1000 1111 –> 000 1111 -> 111 0000 -> 111 0000 +1=111 0001 -> 1111 0001

2. Складываем 13 и -15:

+ 11110001

3. Переводим в обычную двоичную форму:

1111 1110 -> 111 1110 ->000 0001 -> 000 0001+1=000 0010 -> 1000 0010 = -210

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

В тех случаях, когда необходимо произвести арифметические действия над числами больше 127, они размещаются уже не в одном, а в двух и более байтах.

Например, выполним действие: 15-13=15+(-13)

1. Переводим -13 в форму дополнительного кода:

1000 1101 –> 000 1101 -> 111 0010 -> 111 0010 +1=111 0011 -> 1111 0011

2. Складываем 15 и -13:

+ 11110011

3. Знаковый разряд равен 0, обратный перевод не требуется, т. е. результат 0000 0010=210

Умножение. Если наряду с перечисленными операциями выполнить операции сдвига, то с помощью сумматора можно выполнить и умножение, которое сводится к серии повторных сложений. Если цифра в нулевой позиции множителя равна 1, то множимое переписывается под соответствующими разрядами, умножение на последующие единицы приводят к сдвигу слагаемого влево на одну позицию. Если цифра множителя равна 0, то следующее слагаемое смещается на две позиции влево.

Например, умножим 6 (0000 0110) на 5 (0000 0101):

*00000101

(умножаем на 1) +00000110

(умножаем на 0) 1

(умножаем на 1) + 0000011011

 

Проверим: 0001 1110=0*20+1*21+1*22+1*23+1*24=2+4+8=16=30

Например, умножим 15 (0000 1111) на 13 (0000 1101):

*00001101

(умножаем на 1) +00001111

(умножаем на 0) 1

(умножаем на 1) +0000111111

(умножаем на 1) + 00001111111

 

Проверим: 1100 0011=1*27+1*26+0*25+0*24+0*23+0*22+1*21+1*20=1+2+64+128=195

Деление. При выполнении операции деления несколько раз производится операция вычитания. Поэтому предварительно следует найти дополнительный код делителя. Деление выполняется путем повторного вычитания и сдвига. Для примера выполним деление числа 195 (1100 0011) на 15 (0000 1111). Дополнительный код числа 0000 1111 -> 11110001. Поскольку по правилам деления каждое промежуточное делимое должно быть больше делителя, выбираем в качестве первого делимого число 11000, т.е. первые пять разрядов и добавляем слева три нуля, дополняя делимое до 8 разрядов. Затем производим сложение его с дополнительным кодом делимого и заносим в результат единицу. Если следующее делимое после сноса очередной цифры будет меньше делителя, то в результат заносится нуль и в делимое сносится еще одна цифра из исходного делимого.

+ 11110001111

(частное<делителя (1111), то в результат 1) 00001001011

(сносим следующую цифру - 0) 0001001011

+ 11110001 11

(частное<делителя, то в результат 1) 0000001111

(сносим следующую цифру – 1, получившееся число, 000001111

< делителя поэтому в результат записываем 0) 12 12 (сносим следующую цифру – 1) 00001111

+ 11110001

(частное<делителя, в результат 1, деление закончено) 00000000

 

Результат: 0000 1101. Проверим:

1*23+1*22+0*21+1*20=1+4+8=13

 



<== предыдущая лекция | следующая лекция ==>
Список использованных источников и литературы. 1. 1. Конституция РФ: по состоянию на 2014 г | Мова і мовлення в житті людини та суспільства. Поняття про стилі мови
Поделиться с друзьями:


Дата добавления: 2017-02-28; Мы поможем в написании ваших работ!; просмотров: 4671 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

В моем словаре нет слова «невозможно». © Наполеон Бонапарт
==> читать все изречения...

2217 - | 2180 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.013 с.