Главная страница Случайная лекция Мы поможем в написании ваших работ! Порталы: БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика Мы поможем в написании ваших работ! |
Отрицательные числаДвоичная арифметика Двоичные числа ASCII Для целей стандартизации в микрокомпьютерах используется американский национальный стандартный код для обмена информацией ASCII (American National Standard Code for Information Interchange). Читается как «аски» код. Именно по этой причине комбинация бит 01000001 обозначает букву А. Наличие стандартного кода облегчает обмен данными между различными устройствами компьютера. 8-битовый расширенный ASCII-код, используемый в PC обеспечивает представление 256 символов, включая символы для национальных алфавитов. Так как компьютер может различить только нулевое и единичное состояние бита, то он работает системе исчисления с базой 2 или в двоичной системе. Фактически бит унаследовал свое название от английского «Binary digit» (двоичная цифра). Сочетанием двоичных цифр (битов) можно представить любое значение. Значение двоичного числа определяется относительной позицией каждого бита и наличием единичных битов. Самый правый бит имеет весовое значение 1, следующая цифра влево — 2, следующая — 4 и так далее. Общая сумма для восьми единичных битов в данном случае составит 1+2+4+...+ 128, или 255 (2 в восьмой степени — 1). Для двоичного числа 01000001 единичные биты представляют значения 1 и 64, то есть, 65. Но 01000001 представляет также букву А! Действительно, здесь момент, который необходимо четко уяснить. Биты 01000001 могут представлять как число 65, так и букву А: + если программа определяет элемент данных для арифметических целей, то 01000001 представляет двоичное число эквивалентное десятичному числу 65; ^ если программа определяет элемент данных (один или более смежных байт), имея в виду описательный характер, как, например, заголовок, тогда 01000001 представляет собой букву или «строку». При программировании это различие становится понятным, так как назначение каждого элемента данных определено. Двоичное число не ограничено только восемью битами. Процессор может использовать 16-битовую архитектуру, в этом случае он автоматически оперирует с 16-битовыми числами. 2 в степени 16 минус 1 да- ет значение 65535, а немного творческого программирования позволит обрабатывать числа до 32 бит (2 в степени 32 минус 1 равно 4294967295) и даже больше. Компьютер выполняет арифметические действия только в двоичном формате. Поэтому программист на языке Ассемблера должен быть знаком с двоичным форматом и двоичным сложением: 0 + 0 = 0 1 + 1 = 10 2 + 1 + 1 = 11 Все представленные выше двоичные числа имеют положительные значения, что обозначается нулевым значением самого левого (старшего) разряда. Отрицательные двоичные числа содержат единичный бит в старшем разряде и выражаются двоичным дополнением. То сеть, для представления отрицательного двоичного числа необходимо инвертировать все биты и прибавить 1. Рассмотрим пример: Число 65: 01000001 Инверсия: 10111110 Плюс1: 10111111 (равно-65). В случае, если прибавить единичные значения к числу 10111111, 65 не получится. Фактически двоичное число считается отрицательным, если его старший бит равен 1. Для определения абсолютного значения отрицательного двоичного числа, необходимо повторить предыдущие операции: инвертировать все биты и прибавить 1: Двоичное значение: 10111111 Инверсия: 01000000 Плюс 1: 01000001 (равно +65). Сумма +65 и -65 должна составить ноль: 01000001 (+65) + 10111111 (-65) = (1) 00000000
Все восемь бит имеют нулевое значение. Перенос единичного бита влево потерян. Однако, если был перенос в знаковый разряд и из разрядной сетки, то результат является корректным. Двоичное вычитание выполняется просто: инвертируется знак вычитаемого и складываются два числа. Вычтем, например, 42 из 65. Двоичное представление для 42 есть 00101010, и его двоичное дополнение: - 11010110: 6501000001 +(-42) 11010110 = 23(1)00010111 Результат 23 является корректным. В рассмотренном примере произошел перенос в знаковый разряд и из разрядной сетки. В случае, если справедливость двоичного дополнения не сразу понятна, рассмотрим следующие задачи: Какое значение необходимо прибавить к двоичному числу 00000001, чтобы получить число 00000000? В терминах десятичного исчисления ответом будет -1. Для двоичного рассмотрим 11111111: 0000000111111111 Результат: (1) 00000000 Игнорируя перенос (1), можно видеть, что двоичное число 11111111 эквивалентно десятичному -1 и соответственно: О 00000000 -(+1) -00000001-111111111 Можно видеть также каким образом двоичными числами представлены уменьшающиеся числа: +300000011 +2 00000010 + 1 00000001 О 00000000 -1 11111111 -211111110 -311111101 Фактически нулевые биты в отрицательном двоичном числе определяют его величину: рассмотрите позиционные значения нулевых битов как если это были единичные биты, сложите эти значения и прибавьте единицу.
Дата добавления: 2014-03-11; просмотров: 460; Нарушение авторских прав Мы поможем в написании ваших работ! |