Поиск



Счетчик посетителей

Рейтинг@Mail.ru

Разработано jtemplate модули Joomla

Двоичная арифметика

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

Сложение

Допустим нам нужно найти сумму двух двоичных чисел: 10011001110 + 11000101110. Как это сделать. Правила сложения двоичных чисел такие же, как и для десятичных. С той только разницей, что каждый разряд суммы может принимать только два значения - ноль или единица. Точно так же, как и в десятичной системе, для сложения чисел их удобно записать в столбик:

  1 0 0 1 1 0 0 1 1 1 0
  1 1 0 0 0 1 0 1 1 1 0
 
  1 0 1 1 1 1 1 1 1 0 0 0

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

Слагаемые
Результат
Перенос с
предыд. разряда
1-е
слогаемое
2-е
слогаемое
Сумма
Перенос в
след. разряд
0
0
0
0
0
0
0
1
1
0
0
1
0
1
0
0
1
1
0
1
1
0
0
1
0
1
0
1
0
1
1
1
0
0
1
1
1
1
1
1


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

 

Умножение
Умножение двоичных чисел, также схоже на умножение десятичных. Сейчас мы так же покажем этот процесс на примере. Вспомните, как вы умножаете два десятичных числа столбиком. Вот пример умножения двоичных чисел столбиком:
    X   1 0 0 1 1 0 0 1 1 1 0
                  1 0 1 1
       
        1 0 0 1 1 0 0 1 1 1 0
+     1 0 0 1 1 0 0 1 1 1 0  
  0 0 0 0 0 0 0 0 0 0 0    
  1 0 0 1 1 0 0 1 1 1 0      
 
  1 1 0 1 0 0 1 1 0 1 1 0 1 0

Точно так же, как и при умножении двоичных чисел, мы умножаем первое число на каждый разряд второго и записываем полученные результаты под первой чертой, одно под другим со здвигом. Затем полученные промежуточные результаты мы складываем с учетом сдвига. Однако в случае с двоичными числами имеется одно существенное отличие. Так как любой разряд двоичного числа либо ноль, либо единица, то промежуточное умножение сильно облегчается. В самом деле, любое число, умноженное на единицу, равно самому себе. Любое число, умноженное на ноль, равно нулю! Поэтому тут и вычислять то ничего не нужно. Именно по этому умножение двух двоичных чисел сводится к операциям сдвига и сложения. Это очень важно для построения вычислительных машин. Теперь ясно, что нам не нужны какие нибудь там "умножители". Для реализации операций сложения и умножения нам нужны только сумматоры и сдвиговые регистры. С их устройством вы можете познакомиться на нашем сайте.

Вычитание
Для того, что бы упростить операцию вычитания, был придуман так называемый “дополнительный код”. Можно сказать, что при помощи этого кода записываются отрицательные числа. Для того, что бы записать двоичное число в дополнительном коде, необходимо проинвертировать все его разряды а затем прибавить единицу. Инвертировать разряд двоичного числа - это, значит, заменить его содержимое на противоположное. (Ноль на единицу, а единицу на ноль). Ниже в таблице приведены примеры перевода различных чисел в дополнительный код. В каждой строке таблицы вы видите одно и то же число записаное сначала в десятичной системе исчисления, затем в двоичной системе в прямом коде, затем инвертированный прямой код, а затем в дополнительном коде.


Правила перевода числа из десятичного представления в двоичное читайте в разделе «Системы исчисления».

 

Десятичное Двоичное Инвертированное В дополнительном коде
5
00000101
11111010
11111011
7
00000111
11111000
11111001
13
00001101
11110010
11110011
42
00101010
11010101
11010110

 

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

  • Перевести вычитаемое в дополнительный код.
  • Сложить эти два числа (уменьшаемое и вычитаемое в дополнительном коде).
  • При сложении перенос из самого старшего разряда не учитывать.
  • Полученный результат и есть разность.

 

Поясним это на примере. Допустим, нам нужно найти разность между числами 13 и 5, в двоичной системе исчисления. Переведем сначала искомые числа в двоичную систему:
Число 13 берем в прямом двоичном коде (00001101).
Число 5 переводим в дополнительный двоичный код 5 (11111011).
Теперь производим сложение:

 

  0 0 0 0 1 1 0 1
  1 1 1 1 1 0 1 1
 
  1 0 0 0 0 1 0 0 0

 

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

Умножение и деление на 2

Умножение на 2 (на 10 в двоичном коде) это частный случай умножения. Но его следует рассмотреть отдельно. Дело в том, что так же как при умножении на 10 в десятичной системе нужно просто прибавить один нолик вконце числа, так и при умножении на два в двоичной системе для получения результата нужно множимое сдвинуть на один разряд влево и добавить один ноль в младший разряд.

Двоичное Десятичное
1001
9
10010
18
100100
36


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

Примечание: Вы можете сами потренироваться в умножении на два с другими числами. О переводе из десятичного представления числа в двоичное смотри здесь.

Деление на произвольное число

Вспомним как мы делим одно число на другое в десятичной системе исчисления. Я имеется в виду деление столбиком или углом. Точно так же происходит деление в двоичной системе. Вот пример деления двух двоичных чисел:
{mosimage}
 
Сначала мы записываем делимое. В данном случае это число 1000001 (в десятичном виде 65). Затем, справа от него, рисуем угол. В верхней части угла записываем делитель. В нашем случае – это 101 (десятичное 5). Затем мы начинаем находить частное по разрядно. В десятичной системе исчисления в данном случае мы подбираем, на какое число от 1 до 9 нужно умножить делитель, для того, что бы результат был бы все же меньше, чем три первые разряда делимого. Если такого числа не находится, то берут первые четыре разряда делимого. В двоичной системе исчисления любой разряд может принимать только два значения – ноль или единица. Поэтому выбор у нас гораздо меньший. Делитель можно умножать только на 1 либо на ноль. При этом в первом случае он останется неизменным, а во втором он будет равен нулю. Нам придется лишь проверять не больше ли делитель, чем число, составляющее первые три разряда делимого. Как видим первые три разряда составляют число 100, что меньше, чем 101. Поэтому берем первые четыре разряда делимого. Число, составляющее первые четыре разряда делимого (1000) естественно больше делителя. Поэтому мы записываем делитель под первыми четырьмя разрядами делимого и вычитаем эти два числа. Получаем разность 11. В первый разряд частного записываем 1.

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

Далее ищем третий разряд частного. Сносим еще один ноль с очередного разряда делимого. Но из числа 10 невозможно вычесть 101. 10 меньше, чем 101. Поэтому записываем в очередной разряд частного ноль и сносим последний разряд делимого. Теперь вычитание возможно. Более того, результат вычитания равен нулю. Это означает во первых, что последний разряд частного равен единице, а во вторых то, что число 1000001 поделилось на 101 без остатка. Результат деления равен 1101 (десятичное 13).

Заключение

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


Мой сайт по 1С