Главная страница
Навигация по странице:

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



Скачать 0.59 Mb.
Название Двоичная арифметика
Дата 15.03.2018
Размер 0.59 Mb.
Формат файла docx
Имя файла Двоичная арифметика.docx.docx
Тип Документы
#31963
страница 1 из 5
  1   2   3   4   5

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

Числа которыми мы привыкли пользоваться называются десятичными и арифметика которой мы пользуемся также называется десятичной. Это потому, что каждое число можно составить из набора цифр содержащего 10 символов - цифр - "0123456789".

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

Возьмём, к примеру, число 246. Эта запись означает, что в числе две сотни, четыре десятка и шесть единиц. Следовательно, можно записать следующее равенство:

246 = 200 + 40 + 6 = 2 * 10+ 4 * 10+ 6 * 100

 

Здесь знаками равенства отделены три способа записи одного и того же числа. Наиболее интересна нам сейчас третья форма записи: 2 * 10+ 4 * 10+ 6 * 10. Она устроена следующим образом:

В нашем числе три цифры. Старшая цифра "2" имеет номер 3. Так вот она умножается на 10 во второй степени. Следующая цифра "4" имеет порядковый номер 2 и умножается на 10 в первой. Уже видно, что цифры умножаются на десять в степени на единицу меньше порядкового номера цифры. Уяснив сказанное, мы можем записать общую формулу представления десятичного числа. Пусть дано число, в котором N цифр. Будем обозначать i-ю цифру через ai. Тогда число можно записать в следующем виде: anan-1….a2a1. Это первая форма, а третья форма записи будет выглядеть так:

anan-1….a2a= a* 10n-1 + an-1 * 10n-2 + …. + a2 * 10+ a* 100

 

где aэто символ из набора "0123456789"

В этой записи очень хорошо видна роль десятки. Десятка является основой образования числа. И кстати она так и называется "основание системы счисления", а сама система счисления, поэтому так и называется "десятичной". Конечно, никакими особыми свойствами число десять не обладает. Мы вполне можем заменить десять на любое другое число. Например, число в пятиричной системе счисления можно записать так:

anan-1….a2a= a* 5n-1 + an-1 * 5n-2 + …. + a2 * 5+ a* 50

 

где aэто символ из набора "01234"

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

anan-1….a2a= a* 2n-1 + an-1 * 2n-2 + …. + a2 * 2+ a* 20

 

где aэто символ из набора "01"

Эта система самая простая из всех возможных, так как в ней любое число образуется только из двух цифр 0 и 1. Понятно, что проще уже некуда. Примеры двоичных чисел : 10, 111, 101.

Очень важный вопрос. Можно ли двоичное число представить в виде десятичного числа и наоборот, можно ли десятичное число представить в виде двоичного.

 

Двоичное в десятичное. Это очень просто. Метод такого перевода даёт наш способ записи чисел. Возьмём, к примеру, следующее двоичное число 1011. Разложим его по степеням двойки. Получим следующее:

1011 = 1 * 2+ 0 * 2+ 1 * 2+ 1 * 20

 

Выполним все записанные действия и получим:

1 * 2+ 0 * 2+ 1 * 2+ 1 * 2= 8 + 0+ 2 + 1 = 11. Таким образом, получаем, что 1011(двоичное) = 11 (десятичное). Сразу видно и небольшое неудобство двоичной системы. То же самое число, которое, в десятичной системе записано одним знаком в двоичной системе, для своей записи требует четыре знака. Но это плата за простоту (бесплатно ничего не бывает) . Но выигрыш двоичная система даёт огромный в арифметических действиях. И далее мы это увидим.

Представьте в виде десятичного числа следующие двоичные числа.

а) 10010 б) 11101 с) 1010 в) 1110 г) 100011 д) 1100111 е) 1001110

 

Сложение двоичных чисел.

Способ сложения столбиком в общем-то такой же как и для десятичного числа. То есть, сложение выполняется поразрядно, начиная с младшей цифры. Если при сложении двух цифр получается СУММА больше девяти, то записывается цифра=СУММА- 10, а ЦЕЛАЯ ЧАСТЬ (СУММА /10), добавляется в старшему разряду. (Сложите пару чисел столбиком вспомните как это делается.) Так и с двоичным числом. Складываем поразрядно, начиная с младшей цифры. Если получается больше 1, то записывается 1 и 1 добавляется к старшему разряду (говорят "на ум пошло").

 

Выполним пример: 10011 + 10001.

 

1

0

0

1

1

 

1

0

0

0

1

1

0

0

1

0

0

Первый разряд: 1+1 = 2. Записываем 0 и 1 на ум пошло.

Второй разряд: 1+0+1(запомненная единица) =2. Записываем 0 и 1 на ум пошло.

Третий разряд: 0+0+1(запомненная единица) = 1. Записываем 1.

Четвертый разряд 0+0=0. Записываем 0.

Пятый разряд 1+1=2. Записываем 0 и добавляем к шестым разрядом 1.

Переведём все три числа в десятичную систему и проверим правильность сложения.

10011 = 1*2+ 0*2+ 0*2+ 1*2+ 1*2= 16 + 2 + 1 =19

10001 = 1*2+ 0*2+ 0*2+ 0*2+ 1*2= 16 + 1 = 17

100100 = 1*25 + 0*24 + 0*23 + 1*2+ 0*21 + 0*2=32+4=36

17 + 19 = 36 верное равенство

Примеры для самостоятельного решения:

 

а) 11001 +101 =

б) 11001 +11001 =

с) 1001 + 111 =

д) 10011 + 101 =

е) 11011 + 1111 =

д) 11111 + 10011 =

Как десятичное число перевести в двоичное. На очереди следующая операция - вычитание. Но этой операцией мы займёмся немного позже, а сейчас рассмотрим метод преобразования десятичного числа в двоичное.

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

Шаг первый. 2= 4, этого мало. Также мало и 23 = 8, а 24=16 это уже много. Поэтому оставим 23 =8. 12 - 8 = 4. Теперь нужно представить в виде степени двойки 4.

Шаг второй. 4 = 22.

Тогда наше число 12 = 2+ 22. Старшая цифра имеет номер 4, старшая степень = 3, следовательно, должны быть слагаемые со степенями двойки 1 и 0. Но они нам не нужны, поэтому чтобы избавится от ненужных степеней, и оставить нужные запишем число так: 1*2+ 1*22 +0*2+ 0*2= 1100 - это и есть двоичное представление числа 12. Нетрудно заметить, что каждая очередная степень - это наибольшая степень двойки, которая меньше разлагаемого числа. Чтобы закрепить метод рассмотрим ещё один пример. Число 23.

Шаг 1. Ближайшая степень двойки 2= 16. 23 -16= 7.

Шаг 2. Ближайшая степень двойки 2= 4. 7 - 4 = 3

Шаг 3. Ближайшая степень двойки 2= 2. 3 - 2 = 1

Шаг 4. Ближайшая степень двойки 20=1 1 - 1 =0

Получаем следующее разложение: 1*24 + 0*2+1*22 +1*21 +1*20

А наше искомое двоичное число 10111

Рассмотренный выше метод хорошо решает поставленную перед ним задачу, но есть способ который алгоритмизируется значительно лучше. Алгоритм этого метода записан ниже:

Пока ЧИСЛО больше нуля делать

Начало

ОЧЕРЕДНАЯ ЦИФРА = остаток от деления ЧИСЛА на 2

ЧИСЛО = целая часть от деления ЧИСЛА на 2

Конец

Когда этот алгоритм завершит свою работу, последовательность вычисленных ОЧЕРЕДНЫХ ЦИФР и будет представлять двоичное число. Для примера поработаем с числом 19.

Начало алгоритма ЧИСЛО = 19

Шаг 1

ОЧЕРЕДНАЯ ЦИФРА = 1

ЧИСЛО = 9

Шаг 2

ОЧЕРЕДНАЯ ЦИФРА = 1

ЧИСЛО = 4

Шаг 3

ОЧЕРЕДНАЯ ЦИФРА = 0

ЧИСЛО = 2

Шаг 4

ОЧЕРЕДНАЯ ЦИФРА = 0

ЧИСЛО = 1

Шаг 5

ОЧЕРЕДНАЯ ЦИФРА = 1

ЧИСЛО = 0

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

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

 

а) 14 б) 29 в) 134 г) 158 е) 1190 ж) 2019

 

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

 

Известно, что любое рациональное число можно представить в виде десятичной и обыкновенной дроби. Обыкновенная дробь, то есть дробь вида А/В может быть правильной и неправильной. Дробь называется правильной если А<�В и неправильной если А>В.

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

Правило точности. Предположим, дано десятичное число, которое в виде десятичной дроби представимо с точностью до N знаков. Для того, чтобы соответствующее двоичное число было той же точности, в нём необходимо записать M - знаков, так что бы

2> 10N

 

А теперь попробуем получить правило перевода, и для начала рассмотрим пример 5,401

Решение:

Целую часть мы получим по уже известным нам правилам, и она равна двоичному числу 101. А дробную часть разложим по степеням 2.

Шаг 1: 2-2 = 0,25; 0,401 - 0,25 = 0,151. - это остаток.

Шаг 2: Сейчас необходимо степенью двойки представить 0,151. Сделаем это: 2-3 = 0,125; 0,151 - 0,125 = 0,026

Таким образом, исходную дробную, часть можно представить в виде 2-2 +2-3 . То же самое можно записать таким двоичным числом : 0,011. В первом дробном разряде стоит ноль, это потому, что в нашем разложении степень 2-1 отсутствует.

Из первого и второго шагов ясно, что это представление не точное и может быть разложение желательно продолжить. Обратимся к правилу. Оно говорит, что нам нужно столько знаков М чтобы 103 было меньше чем 2М. То есть 1000<2M. То есть в двоичном разложении у нас должно быть не менее десяти знаков, так как 2= 512 и только 210 = 1024. Продолжим процесс.

Шаг 3: Сейчас работаем с числом 0,026. Ближайшая к этому числу степень двойки 2-6 = 0,015625; 0,026 - 0,015625 = 0,010375 теперь наше более точное двоичное число имеет вид: 0,011001. После запятой уже шесть знаков, но этого пока недостаточно, поэтому выполняем ещё один шаг.

Шаг 4: Сейчас работаем с числом 0,010375. Ближайшая к этому числу степень двойки 2-7 = 0,0078125;

0,010375 - 0,0078125 = 0,0025625

Шаг 5: Сейчас работаем с числом 0,0025625. Ближайшая к этому числу степень двойки 2-9 = 0,001953125;

0,0025625 - 0,001953125 = 0,000609375

Последний получившийся остаток меньше чем 2-10 и если бы мы желали продолжать приближение к исходному числу, то нам бы понадобилось 2-11, но это уже превосходит требуемую точность, а следовательно расчёты можно прекратить и записать окончательное двоичное представление дробной части.

0,401 = 0,011001101

 

Как видно, преобразование дробной части десятичного числа в двоичное представление немного более сложно, чем преобразование целой части. Таблица степеней двойки в конце лекции.

А сейчас запишем алгоритм преобразования:

Исходные данные алгоритма: Через А будем обозначать исходную правильную десятичную дробь записанную в десятичной форме. Пусть эта дробь содержит N знаков.

Алгоритм

 

Действие 1. Определим количество необходимых двоичных знаков М из неравенства 10< 2M

 

Действие 2: Цикл вычисления цифр двоичного представления (цифры после нуля). Номер цифры будем обозначать символом К.

  1. Номер цифры = 1

  2. Если 2-К > А

То в запись двоичного числа добавляем ноль

Иначе

    • в запись двоичного числа добавляем 1

    • А = А - 2

  1. К = К + 1

  2. Если К > М

 

 

Переведите десятичные числа в двоичные

 

а) 3,6 б) 12,0112 в) 0,231 г) 0,121 д) 23, 0091

 

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

 

1

1

0

1

-

 

1

1

0

 

 

1

1

1

Первый разряд. 1 - 0 =1. Записываем 1.

Второй разряд 0 -1. Не хватает единицы. Занимаем её в старшем разряде. Единица из старшего разряда переходит в младший, как две единицы (потому что старший разряд представляется двойкой большей степени ) 2-1 =1. Записываем 1.

Третий разряд. Единицу этого разряда мы занимали, поэтому сейчас в разряде 0 и есть необходимость занять единицу старшего разряда. 2-1 =1. Записываем 1.

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

1101 - 110 = 13 - 6 = 7 (111) Верное равенство.

Еще один интересный способ выполнения вычитания связан с понятием дополнительного кода, который позволяет свести вычитание к сложению. Получается число в дополнительном коде исключительно просто, берём число, заменяем нули на единицы, единицы наоборот заменяем на нули и к младшему разряду добавляем единицу. Например, 10010, в дополнительном коде будет 011011.

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

Пример: 34 - 22 = 12

Запишем этот пример в двоичном виде. 100010 - 10110 = 1100

Дополнительный код числа 10110 будет такой

01001 + 00001 = 01010. Тогда исходный пример можно заменить сложением так 100010 + 01010 = 101100 Далее необходимо отбросить одну единицу в старшем разряде. Если это сделать то, получим 001100. Отбросим незначащие нули и получим 1100, то есть пример решён правильно

Выполните вычитания. Обычным способом и в дополнительном коде, переведя предварительно десятичные числа в двоичные:

 

а) 456 - 112

б) 234 -12

в) 345 -232

г) 456 - 78

д) 567 - 109

е) 67 - 45

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

Умножение в двоичной системе счисления.

 

Для начала рассмотрим следующий любопытный факт. Для того, чтобы умножить двоичное число на 2 (десятичная двойка это 10 в двоичной системе) достаточно к умножаемому числу слева приписать один ноль.

Пример. 10101 * 10 = 101010

Проверка.

10101 = 1*24 + 0*23 + 1*2+ 0*2+1*20 = 16 + 4 + 1 = 21

101010 =1*25 + 0*24 + 1*2+ 0*2+1*2+0*20 = 32 + 8 + 2 = 42

21 * 2 = 42

Если мы вспомним, что любое двоичное число разлагается по степеням двойки, то становится ясно, что умножение в двоичной системе счисления сводится к умножению на 10 (то есть на десятичную 2), а стало быть, умножение это ряд последовательных сдвигов. Общее правило таково: как и для десятичных чисел, умножение двоичных выполняется поразрядно. И для каждого разряда второго множителя к первому множителю добавляется один ноль справа. Пример (пока не столбиком):

1011 * 101 Это умножение можно свести к сумме трёх порязрядных умножений:

1011 * 1 + 1011 * 0 + 1011 * 100 = 1011 +101100 = 110111 В столбик это же самое можно записать так:

 

 

1

0

1

1

 

*

 

1

0

1

 

 

1

0

1

1

 

0

0

0

0

 

1

0

1

1

 

 

1

1

0

1

1

1
  1   2   3   4   5
написать администратору сайта