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

Потопахин Виталий Валерьевич

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

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

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

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

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

246 = 200 + 40 + 6 = 2 * 102 + 4 * 101 + 6 * 100

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

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

anan-1….a2a1 = an * 10n-1 + an-1 * 10n-2 + …. + a2 * 101 + a1 * 100

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

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

anan-1….a2a1 = an * 5n-1 + an-1 * 5n-2 + …. + a2 * 51 + a1 * 50

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

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

anan-1….a2a1 = an * 2n-1 + an-1 * 2n-2 + …. + a2 * 21 + a1 * 20

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

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

Примеры двоичных чисел: 10, 111, 101.

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

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

 

1001 = 1 * 23 + 0 * 22 + 0 * 21 + 1 * 20

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

 

1 * 23 + 0 * 22 + 0 * 21 + 1 * 20 = 8 + 0+ 0 + 1 = 9.

Таким образом, получаем, что 1011(двоичное) = 9 (десятичное). Сразу видно и небольшое неудобство двоичной системы. То число, которое, в десятичной системе записано одним знаком в двоичной системе, для своей записи требует четырех знаков. Но это плата за простоту в других вещах (бесплатно ничего не бывает). Двоичная система даёт огромный выигрыш в арифметических действиях. Ниже мы подробно рассмотрим этот вопрос.

 

Упражнение. Представьте в виде десятичного числа следующие двоичные числа: а) 10010 б) 11101 с) 1010 в) 1110 г) 100011 д) 1100111 е) 1001110

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

Рассмотрим способ сложения “столбиком” (такой же, как и для десятичного числа).

Сложение в десятичной системе выполняется поразрядно, начиная с младшей цифры. Если при сложении двух цифр получается СУММА больше десяти, то записывается цифра 9, а СУММА МИНУС ДЕВЯТЬ, добавляется к следующему старшему разряду. (Сложите пару чисел столбиком, вспомните, как это делается.)

Аналогично выполняется сложение двоичных чисел.

Складываем числа поразрядно, начиная с младшей цифры (она стоит крайней справа).

- Если сумма равна 0 или 1 – она записывается в данный разряд числа - суммы,

- если сумма разрядов равна 2, то в соответствующий разряд числа - суммы записывается 0, а к сумме следующих разрядов прибавляется 1,

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

 

Рассмотрим пример: 10011 + 10001.

 

 
 

 

Первый разряд: 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*24 + 0*23 + 0*22 + 1*21 + 1*20 = 16 + 2 + 1 =19

10001 = 1*24 + 0*23 + 0*22 + 0*21 + 1*20 = 16 + 1 = 17

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

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

 

Упражнения для самостоятельного решения:

Вычислить в двоичной системе

а) 11001 +101 =

б) 11001 +11001 =

с) 1001 + 111 =

д) 10011 + 101 =

е) 11011 + 1111 =

д) 11111 + 10011 =

 

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

 

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

 

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

 

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

 

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

Чтобы закрепить метод рассмотрим ещё один пример. Найти двоичную запись числа 23.

 

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

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

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

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

 

Получаем следующее разложение: 1*24 + 0*23 +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 - знаков, так что бы

2m > 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. То есть в двоичном разложении у нас должно быть не менее десяти знаков, так как 29 = 512 и только 210 = 1024. Продолжим процесс.

 

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

 

Шаг 4: Сейчас работаем с числом 0,010375. Ближайшая к этому числу степень двойки 27 = 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. Определим количество необходимых двоичных знаков М из неравенства 10N < 2M

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

 

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

2. Если 2> А

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

Иначе

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

§ А = А - 2

3. К = К + 1

4. Если К > М

§ то работа алгоритма завершена

§ Иначе переходим на пункт 2.

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

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

Вычитание двоичных чисел

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

 
-  
=  

Первый разряд. 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, то есть пример решён правильно