Прежде чем приступить к рассмотрению двоичной арифметики нужно подметить следующее: в отличии от нас (людей), у которых есть различные арифметические операции (сложение, деление, умножение…), у ЭВМ (компьютеров) присутствует только одна арифметическая операция – сложение. Через данную операцию все ЭВМ производят различные вычисления, а вычисление операций умножения, деления и вычитания они производят с помощью различных алгоритмов. Например, операция 7 – 3
для ЭВМ будет представлена в виде 7 + (-3)
, где 7
и -3
будут представлены в двоичной системе.
Теперь давайте рассмотрим, как будет происходить двоичное сложение в ЭВМ, и нужно сказать, что они не слишком сильно отличается от операции сложения в столбик для десятичной системы счисления изученных в школе. Отличие состоит лишь в том, что в десятичной системе счисления при достижении 10
в разряде происходило присвоение текущему разряду 0
и добавления 1
к следующему, а для двоичной системы это будет происходить при достижении 2
.
Например, сложение двух положительных чисел в двоичной системе:
Если бы происходило сложение с отрицательным числом, то присутствовала бы ещё дополнительная характеристика отрицательных чисел в двоичной системе счисления, а именно: значение первого бита слева представляло бы собой знак числа, если 0
– число положительное, если 1
– число отрицательное.
Сами же отрицательные числа в двоичной системе также записываются по-другому, например:
-1 = 1111 1111
-2 = 1111 1110
-6 = 1111 1010
-128 = 1000 0000
У всех этих чисел первый левый бит обозначает знак числа.
Пример операции сложения с отрицательным числом (результат: положительное число):
Правило: если 1
выйдет за пределы, то нужно её удалить.
Пример операции сложения с отрицательным числом (результат: отрицательное число):
Примечание: как уже рассматривалось на 3 уроке, в C# присутствуют знаковые (byte
, short
, int
, long
) и беззнаковые (sbyte
, ushort
, uint
, ulong
) типы. У знаковых типах 1й левый бит выделяется для хранения знака числа, а у беззнаковых типов – все биты отвечают значениям (на знак бит не выделяется), таким образом исходя из типа ЭВМ может определить как правильно провести операцию сложения с значениями относящимися к данным типам.
Примечание: за проведение арифметических операций с целыми числами ответственный АЛУ, а за проведение арифметических операций с вещественными числами ответственный FPU.
Источник: видеоурок Александра Шевчука "ВИДЕОУРОК №5. ЛОГИЧЕСКИЕ ОПЕРАЦИИ".