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

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

Читайте также:
  1. B) в квантово-механической системе не может быть двух или более электронов, находящихся в состоянии с одинаковым набором квантовых чисел
  2. I. Множество натуральных чисел.
  3. I. Схема кровотока в кортикальной системе
  4. III. Множество рациональных чисел.
  5. А. Гелен. О системе антропологии.
  6. В настоящее время в системе доступно более 72 млн. документов.
  7. В российской налоговой системе используется подход с точки зрения анализа налоговых условий ведения предпринимательской деятельности (Основные напрвления налоговой политики).

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

Обратный код получается из прямого кода путём замены всех нулей на 1, а всех единиц на 0.

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

На первом этапе выравнивается количество разрядов у уменьшаемого и вычитаемого и добавляются знаковые разряды. В знаковом разряде у положительного числа записывается 1, а в знаковом разряде у отрицательного числа записывается 0.

На втором этапе вычитаемое записывается в обратном коде. Для этого все нули у вычитаемого заменяются на 1 а все единицы у вычитаемого заменяются на 0.

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

На этом же этапе происходит анализ полученного ответа.

 

Вычтем из большего числа меньшее число: 110111101 – 10110112

 

Анализ ответа говорит о том, что ответ положителен (так как в знаковом разряде стоит 0), и поэтому он записан в прямом коде.

Таким образом, ответ: 1011000102

 

Вычтем из меньшего числа большее число: 110111 – 11101101

 

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

Таким образом, окончательный ответ: - 101101102


Урок №3 Форматы данных и машинные коды чисел.

 

Знак числа обычно кодируется двоичной цифрой: знак "+" кодируется 0, знак "-" кодируется 1. Если двоичные числа —45 и 31 в форме с запятой, фиксированной после нулевого разряда, сложить, то получим неверный результат 1100.1100 или в десятичной системе счисления -45+31 =-76 (10101101+00011111=11001100). Чтобы арифметические операции над знаковыми числами в ЭВМ можно было бы производить точно также, как и с беззнаковыми переменными, отрицательные числа представляются в дополнительном коде.

Следует упомянуть, что aльтepнaтивными являютcя представления в прямом и обратном коде.

Прямой код числа N – = -(abs(N). Такой код и был использован в рассмотренном выше примере. Недостатки такого представления:

- операцию вычитания нельзя заменить операцией сложения;

- представление числа 0 неоднозначно.

Обратный код числа получается инверсией двоичных разрядов. Через а обозначим двоичный разряд числа, а через а* - инверсию двоичного разряда (если а=1, то а*=0 и если а=0, то а*=1). Правило получения обратного кода:

если N>0, то = 0aaaaaaa;

если N<0, то =1 а* а* а* а* а* а* а* а*,

если N=0, то имеет место неоднозначность или .

Например, число 11 в обратном коде представляется как 0.1011, а число с=-7 будет представлено как 1.1000. Сложим эти числа:

0.1011+1.1000= 0.0011+ единица переноса из старшего разряда.

Если единицу переноса из старшего разряда игнорировать, то результат сложения неверный: 11-7=3. Чтобы получить верный результат, необходимо единицу переноса добавить к младшему разряду результата: 0.1011+1.1000=0.0011+0.0001=0.0100 (11-7=4).

Следовательно,

- представление 0 в обратном коде неоднозначно;

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

В дополнительном коде положительное число представляется также, как в прямом и обратном кодах, т.е. при N>0, = 0aaaaaaa.

 

Чтобы получить дополнительный код отрицательного числа:

1) надо взять его положительную форму (взять прямой код положительного числа);

2) обратить каждый бит (иначе говоря, заменить в представлении числа 0 на 1 и 1 на 0);

3) добавить к полученному числу 1 младшего разряда. Например, представим в дополнительном коде число-32:

1) положительная форма числа –0.00100000;

2) обратим биты –1.11011111;

3) добавим 1 —1.11011111 +0.00000001

получим 1.11100000 - дополнительный код числа.

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

Недостаток такого представления - при использовании дополнительного кода отрицательное число становится трудно расшифровать. Однако дело облегчается тем, что положительную форму отрицательного числа в дополнительном коде можно получить аналогично вышеописанной методике, выполнив пункты 2 и 3. Проверим на рассмотренном выше примере:

2) обращаем биты 000011111;

3) добавляем 1 + 0.00000001 получим 0.00100000.

Выполнение арифметических операций в компьютере

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

Таблицы для двоичной арифметики будут следующими:

Сложение

0+0=0, 0+1=1, 1+0=1, 1+1=0+единица переноса, 1+1+единица переноса=1+единица переноса;

Вычитание

0-0=0, 1-0=1, 0-1=1+единица заема;

Умножение

0*0=0, 1*0=0, 0*1=0, 1*1=1.

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

определяется наличие переносов из двух старших разрядов числа

- если переносов нет, то результат операции правильный;

- если есть переносы из обеих разрядов, то результат операции тоже правильный;

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

При использовании дополнительного кода единица переноса из знакового разряда игнорируется.

Как видно из вышеизложенного, правило определения факта переноса оказывается достаточно сложным. Для его упрощения в ЭВМ часто используют модифицированные коды: для изображения знака числа используются 2 двоичных разряда, при этом знак "+" изображается комбинацией 00, а знак "-" -комбинацией 11. Тогда ситуация переполнения определяется при разных значениях битовых разрядов знака, а именно, если в знаковых разрядах получаются комбинации 01 или 10 - значит, произошло переполнение.

Умножение многоразрядных двоичных чисел производится путем образования частичных произведений и последующего их суммирования. Частичные произведения получаются после сдвигов умножителя. Единственной особенностью является то, что если сомножитель является отрицательным (знаковые разряды равны 11), то перед началом умножения следует приписать к нему слева столько единиц, сколько значащих разрядов у другого сомножителя справа от запятой. Результат произведения всегда получается в дополнительном коде.

Операция деления представляется последовательностью операций вычитания и сдвига делителя.

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

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

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


Урок№4 Представление информации в ЭВМ

Минимальная единица информации – бит. Бит - это информация о состоявшемся событии, которое могло иметь только два исхода (1/0). Любая информация, поступающая в ЭВМ (числа, символы текста, изображения, звуки), преобразуется в группы (последовательности) двоичных цифр – единиц и нулей. Каждый двоичный разряд хранится в специальной электронной ячейке, количество которых в ЭВМ строго определено. В одном разряде можно хранить один бит – любое из двух (21) значений: 0 или 1. В двух разрядах – любое из 4 (22) значений: 00, 01, 10, 11. В n разрядах можно хранить любое из 2n значений: от 00…00 до 11…11. Для хранения различной информации используется строго определенное количество двоичных разрядов..

 – бит: 1 двоичный разряд.

Очень малый объем информации. В одном разряде можно хранить какой-то признак (флаг). В 16-ти цветных машинах в одном разряде хранились признаки цвета RGB.

 – байт (Byte - слог): 8 двоичных разрядов. Разряды в байте нумеруются от 0 до 7. В зависимости от модели ЭВМ нумерация производится либо справа налево, либо слева направо.

 

В байте можно хранить натуральные числа от 0 до 255 (00000000 – 11111111)2, что явно недостаточно для выполнения математических операций. Поэтому байт используют для хранения номеров внешних устройств, номеров открытых файлов, кодов символов, частей команд и т.д. Какая информация хранится в байте, определяет программист (язык программирования). При хранении кодов символов каждому символу просто присваивается определенный номер. Существуют международные и национальные стандарты на кодировку символов.

 

КОИ-7 – (код обмена информацией) использует 7 бит из возможных 8 (коды от 0 до 127). Хранит коды цифр, знаков препинания и основных математических опреаций, прописных и строчных латинских символов. В национальных стандартах строчные латинские буквы и некоторые символы заменяются прописными национальными символами или подается специальный сигнал внешнему устройству для перехода с латинского на национальный шрифт.

 

КОИ-8 - 8-битный код. Коды от 0 до 127 дублируют КОИ-7 с латинскими символами, а с 128 до 255 – с национальными ([0…127] + 128). Гораздо эффективнее КОИ-7, однако не использует все возможности байта, т.к. многие символы верхней части кодовой таблицы дублируют символы нижней части. (33 и 33+128 – "!", 48 и 48+128 – "0" и т.д.).

 

ASCII (DOS-кодировка IBM) – коды от 0 до 127 практически дублируют КОИ-7, а в верхней части таблицы размещают специальные и национальные символы. Дублирование нижней части таблицы исключено.

 

ANSI (Кодировка WINDOWS) – отличается от ASCII размещением и набором символов верхней части таблицы. (Цель появления – создать неудобства и заставить приобретать новое программное обеспечение(?), т.к. даже тексты Windows не читаются в DOS).

 

Начиная с Windows-95 применяется кодировка Unicode, использующая 2 байта для хранения символа (1 байт – номер символа, 2 – номер национальной или символьной страницы), что обеспечивает поддержку практически любого языка (65536 символов от 0 до 65535).

 

Иногда в байте хранят натуральные (0…255) или целые числа (-128…127). При этом само число хранится в 7 младших (правых) разрядах, а в старшем разряде хранится признак знака.

 

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

210 байт = 1024 байта = 1 Кбайт (килобайт)

210 Кбайт = 1024 Кбайта = 1 Мбайт (мегабайт)

210 Мбайт = 1024 Мбайта = 1 Гбайт (гигабайт) и т.д.


Урок №5 Логические основы ЭВМ

Логические операции и таблицы истинности

A B F
     
     
     
     

F = A & B=AB=A^B

Логическое умножение КОНЪЮНКЦИЯ - это новое сложное выражение будет истинным только тогда, когда истинны оба исходных простых выражения. Конъюнкция определяет соединение двух логических выражений с помощью союза И.

Условно-графическое обозначение элемента на логической схеме:

 

 

A B F
     
     
     
     

F = A + B

Логическое сложение – ДИЗЪЮНКЦИЯ - это новое сложное выражение будет истинным тогда и только тогда, когда истинно хотя бы одно из исходных (простых) выражений. Дизъюнкция определяет соединение двух логических выражений с помощью союза ИЛИ.

Условно-графическое обозначение элемента на логической схеме:

 

A неА
   
   

Логическое отрицание: ИНВЕРСИЯ - если исходное выражение истинно, то результат отрицания будет ложным, и наоборот, если исходное выражение ложно, то результат отрицания будет истинным. Данная операция означает, что к исходному логическому выражению добавляется частица НЕ

Условно-графическое обозначение элемента на логической схеме:

 
 

 


Основные законы алгебры-логики:

Закон Для ИЛИ Для И
Переместительный
Сочетательный
Распределительный
Правила де Моргана
Идемпотенции
Поглощения
Склеивания

 


Урок №6 Функции 2-х переменных

Штрих Ше́ффера — бинарная логическая операция, булева функция над двумя переменными.

Таблица значений

X Y X|Y
     
     
     
     

Как и любую булеву операцию, штрих Шеффера можно выразить через отрицание и дизъюнкцию:

либо через отрицание и конъюнкцию

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

— отрицание

— дизъюнкция

— конъюнкция

Это позволяет в системе транзисторно-транзисторная логики реализовать всю необходимую логику с использованием единственного типового элемента. Примером может являться промышленная 155 серия. С другой стороны, использование других типовых элементов позволит уменьшить их общее количество и тем самым повысить надёжность схемы. Элемент, реализующий штрих Шеффера обозначается следующим образом:

Стре́лка Пи́рса — двуместная логическая операция, введена в рассмотрение Ч. Пирсом. Стрелка Пирса, обычно обозначаемая ↓, задаётся следующей таблицей истинности:

A B A ↓ B
     
     
     
     

Таким образом, высказывание «A ↓ B» означает «ни A, ни B». Стрелка Пирса обладает тем свойством, что через неё одну выражаются все другие логические операции:

x ≡ x↓x

x & y ≡ (x↓x) ↓ (y↓y)

x v y ≡ (x↓y) ↓ (x↓y)

x → y ≡ ((x↓x) ↓ y) ↓ ((x↓x) ↓ y)

От перемены мест операндов результат операции не изменяется.

В логических схемах носит название "операция ИЛИ-НЕ"

Функция равнозначности

_ _

X=AœB=ABvAB

Функция обладает следующим свойством: при совпадении исходных данных результатом является истина.

 

A B A œ B
    1
     
     
     

 

Функция неравнозначности

_ _

X=A B=ABvAB

Функция обладает следующим свойством: при совпадении исходных данных результатом является ложь.

 

A B A œ B
    0
     
     
     

 


Урок №7 Основы построения ЭВМ

 

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

Сложить 2 числа;

Проверить, не является ли число нулем;

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

Эти примитивные команды в совокупности составляют язык, на котором люди могут общаться с компьютером. Такой язык называется машинным. Разработчик при создании нового компьютера должен решить, какие команды включить в машинный язык этого компьютера. Это зависит от назначения компьютера и от задач, которые он должен решать. Обычно стараются сделать машинные команды как можно проще, чтобы избежать сложностей при разработке компьютера и снизить затраты на электронику. Большинство машинных языков крайне примитивны, из-за чего писать на них трудно и утомительно.

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

Большинство современных компьютеров состоит из шести уровней:

Цифровой логический уровень

Уровень микроархитектуры

Уровень архитектуры набора команд

Уровень операционной системы

Уровень ассемблера

Уровень языка прикладных программистов

На самом нижней - нулевом уровне выполняются различные операции над числами, представленными в двоичной форме.


Урок№8 Внутренняя организация процессора

 

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

- блок для выполнения логических и арифметических операций (АЛУ);

- блок для хранения информации (память) или ОЗУ;

- устройства для ввода и вывода данных.

Для обеспечения согласованной работы вышеперечисленных устройств преобразования информации требуется устройство управления (УУ).

 

На этой схеме линиями разной толщины отмечены потоки:

информации

управляющих сигналов

Используемые в изложении аббревиатуры означают следующее:

УУ – устройство управления,

Увв – устройства ввода,

Увыв – устройства вывода

АЛУ – арифметико-логическое устройство,

ЗУ – запоминающее устройство, память ЭВМ,

ПК –персональный компьютер.

Кратко функционирование устройств ЭВМ можно описать так.

УУ инициирует работу Увв, давая ему команду на выполнение ввода в ЗУ, аналогично инициируется работа Увыв.

УУ указывает, из какой ячейки памяти ЗУ необходимо передавать информацию в АЛУ, какую операцию над этой информацией должно выполнять АЛУ, в какую ячейку памяти должен быть занесен результат операции. Современные ЭВМ имеют отличия, обусловленные развитием ВТ.

Основные отличия:

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

АЛУ и УУ объединены в одно устройство, называемое центральным процессором (ЦП).

Центральный процессор

 

УИ: Устройство исполнения ШИ: Шинный интерфейс

 
 

 

 


Шина

 

Очередь исполнения

 

 

Рисунок 4.1. Взаимодействие логических устройств процессора

 


Урок №10 Регистры процессора

Сегментный регистр хранит стартовый (начальный) адрес памяти, определенный операционной системой для хранения команд программы (CS), переменных и констант (DS) и стека (SS) – для временного хранения результатов обработки, параметров вызываемых из программы процедур и адресов возврата из вызываемых процедур. На приведенном ниже рисунке графически показана связь сегментных регистров и соответствующих им сегментов. Рисунок отражает принципиальную связь между сегментными регистрами и сегментами программы, откуда следует, что программные сегменты не обязательно располагаются в оперативной памяти в порядке, отображенном на рисунке. Не стоит забывать, что в программе могут задаваться и дополнительные сегменты данных (такие, как ES, а в процессорах 80386 и выше еще и FS и GS), но приведенные 3 сегмента программы присутствуют в любой программе.

Сегмент начинается с границы параграфа (адреса, нацело делящегося на 16, с четырьмя двоичными нулями в младших разрядах значения адреса). Ячейки памяти внутри сегмента нумеруются относительно стартового адреса сегмента. Расстояние в байтах от начала сегмента до любой другой ячейки внутри этого сегмента, называется смещением.

Имена сегментных регистров строго зарезервированы, и поэтому при появлении этих имен в программе процессор обращается к своей внутренней памяти.

Сегмент стека   Сегмент данных     Сегмент кода   Max адрес
Оперативное

запоминающее

устройство

       
   
 
 
Адрес     Адрес   Адрес


SS

 
 


DS

 
 


CS

 

 
 

 


Связь сегментов и сегментных регистров.

Регистр CS содержит адрес первой команды программы. Сумма содержимого этого регистра со значением смещения в указателе инструкций – регистре IP – дает адрес команды программы, которая должна быть передана следующей для исполнения.

Регистр DS содержит адрес первой переменной или константы, объявленной в программе. Команды используют этот регистр для поиска значений операндов, участвующих в операциях обработки. Этот адрес, сложенный со смещением переменной, дает ссылку на определенную ячейку со значениями исходных данных, промежуточных результатов или выходных данных.

Регистр SS позволяет реализовать в памяти стек, который программа использует для временного хранения адресов и данных. Адрес из этого регистра складывается со смещением, хранимым в указателе стека SP, и суммарное значение указывает на текущее слово в стеке.

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

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


Дата добавления: 2015-07-08; просмотров: 463 | Нарушение авторских прав


Читайте в этой же книге: Перевод целого числа из десятичной системы счисления в любую другую систему счисления. | Перевод чисел из двоичной системы счисления в восьмеричную систему счисления. | Классификация материнских плат по форм-фактору | Phenom X4 | Мультипрограммирование, многопользовательский режим работы и режим разделения времени |
<== предыдущая страница | следующая страница ==>
Перевод чисел из двоичной системы счисления в шестнадцатеричную систему счисления.| Универсальные регистры

mybiblioteka.su - 2015-2024 год. (0.038 сек.)