Лекции.Орг


Поиск:




Категории:

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

 

 

 

 


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




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

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

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

Числа, которыми мы привыкли пользоваться, называются десятичными и арифметика, которой мы пользуемся, также называется десятичной. Называются они так потому, что каждое число можно составить из набора цифр содержащего 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, то есть пример решён правильно

 





Поделиться с друзьями:


Дата добавления: 2016-11-23; Мы поможем в написании ваших работ!; просмотров: 621 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Победа - это еще не все, все - это постоянное желание побеждать. © Винс Ломбарди
==> читать все изречения...

2268 - | 2092 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.013 с.