|
Я это делаю Персональное меню Голосование Поиск по сайту Реклама Статистика |
Источник ошибок при переводе между разными системами счисленияНе всякое число может быть точно представлено в выбранной системе счисления. Например, в десятичной системе счисления невозможно точно записать значение дроби 1/3. В десятичной системе счисления эту дробь обычно записывают так: 0.333333(3). При этом тройка в скобках означает, что она дальше повторяется бесконечное количество раз. Но для практических целей обычно можно записать число просто с определённой точностью. Например, можно записать так: 0.333333. Но при этом нужно понимать, что 1/3 не равно 0.333333. Собственно, когда мы берём и вычёркиваем некоторые наиболее младшие разряды - мы вносим ошибку. При этом следует отметить, что не во всякой системе счисления число 1/3 невозможно представить точно. Например, в троичной системе счисления 1/3 равно 0.13 в точности. Примеров чисел, которые в одной системе можно представить точно, а в другой нельзя - очень много. Например, 0.610 - в десятичной системе это точное число. А вот если мы захотим перевести его в двоичную систему счисления, то получим 0.10011001100110011001100110011001(1001)2. То есть, невозможно точно записать число 0.610 в двоичной системе счисления без использования бесконечной дроби. На практике мы обычно округляем до какого-то определённого количества знаков после запятой - именно в этот момент мы вносим ошибку. Важная особенность чисел состоит ещё в том, что целые числа можно представить точно в любой системе счисления. Поэтому, всё, что будет написано ниже на этой странице - касается только дробной части чисел. Точность и чёткостьПервое, что нужно понять, когда мы имеем дело с разными числами, это отличия между точностью и чёткостью. Когда речь идёт о числах, то речь всегда идёт о каком-нибудь количестве. При этом, с одной стороны, как мы говорили выше, не всегда возможно записать это количество абсолютно точно - так или иначе возникает погрешность из-за того, что не все числа возможно записать в выбранной системе счисления. Но у погрешности могут быть и другие причины. Простейший пример - Вы можете просто не знать точного значения, либо используемая Вами формула по своему определению не даёт точного результата. В этом втором случае сколько цифр не дописывай, точность не повысится. В отличие от первого случая - если точное значение известно, то достаточно всего лишь дописать ещё один младший разряд, и получится более точное значение. Точность указывает на то, насколько близко Ваше число к реальному значению. Чёткость же относится только к представлению числа и в нашем случае чёткость равносильна количеству цифр в числе. Значение может быть чётким, не будучи точным, и наоборот. Например, простая цифра 3 является точным представлением числа «Пи» с точностью до одной цифры, но чётким такое представление не является. С другой стороны, число 3.87882 обладает большей чёткостью, но точность у этого числа меньше. Точность очень часто подменяют чёткостью. Например, могут написать так: «для выполнения этого проекта потребуется 132.2456 часа». Это очень чёткое значение, но, скорее всего, точность оценки времени выполнения проекта не соответствует заявленной чёткости - в реальности может оказаться, что потребуется 132.2456 плюс-минус 10 часов. В таком случае, чтобы не вводить в заблуждение излишней чёткостью, имеет смысл округлить до десятков часов и вместо очень чёткого числа написать менее чёткое, но зато не создающее ошибочное впечатление высокой точности числа: «для выполнения проекта потребуется 130 часов». Ещё один известный пример подмены точности чёткостью - это расписание движения поездов. Эти расписания обычно обладают чёткостью до одной минуты, но при этом расписания часто оказываются не очень точными. С другой стороны, известны и немногочисленные обратные примеры - когда точностью жертвовали ради того, чтобы повысить чёткость. Например, согласно первому измерению высоты Эвереста, которое было сделано в 1856 году, высота вершины составляла ровно 29000 футов (8839 м). Но при этом было объявлено, что высота Эвереста составляет 29002 фута (8840 м). Это произвольное добавление было сделано, чтобы из-за круглого числа 29000 не возникло впечатление, что точность измерений невысока. При переводе чисел между различными системами счисления следует различать точность и чёткость. Точность перевода - это насколько точно полученное число в новой системе счисления соответствует исходному числу. При этом ошибка в точности может возникнуть из-за того, что мы округлили число в новой системе счисления, использовав какое-то фиксированное (а не бесконечное) количество разрядов. Чёткость перевода - это просто количество цифр, которые Вы получили после перевода числа из одной системы счисления в другую (это грубое определение - мы это определение уточним чуть ниже). Если точность уже потеряна из-за округления, то дальше, сколько не повышай чёткость - точность не увеличится. Примеры я ещё приведу ниже, когда мы узнаем, как определить чёткость числа и на примере перевода чисел между разными системами счисления рассмотрим отличия между чёткостью и точностью. В абсолютном большинстве известных мне источников не делается отличий между точностью и чёткостью, несмотря на очевидную разницу между этими двумя терминами. Чаще всего и точность и чёткость называется словом «точность». Но мы не будем эти два понятия смешивать и будем называть чёткость - чёткостью, а точность - точностью. Как определить чёткость числаПо определению, которое мы дали выше, чёткость числа - это количество цифр, которые были использованы при записи этого числа. Например, число 0.3610 записано с чёткостью в две цифры. Мы можем легко сравнить два числа и сказать, у какого из них чёткость выше. Например, чёткость у числа 0.3632410 вне всякого сомнения выше, чем чёткость числа 0.310, потому что в первом случае записано 5 значащих цифр, а во втором - только одна. Но когда мы имеем дело с числами в различных системах счисления, то для сравнения чёткости не достаточно знать количество цифр. Например, какое из чисел более чёткое - 0.310 или 0.12? Если Вы уже умеете легко переводить в уме числа из двоичной системы счисления в десятичную с небольшой точностью, то Вы наверняка уже сообразили, что 0.310 - гораздо более чёткое число, чем 0.12, так как в первом случае речь идёт о десятых долях (то есть, три десятых доли), а во втором случае - о половинках (то есть, одна половинка). Если использовать эти числа для записи, к примеру, роста человека, то одна цифра после запятой в десятичной системе счисления означает чёткость записи роста до 10 сантиметров, а одна цифра после запятой в двоичной системе счисления будет означать чёткость записи роста до полуметра. То есть, чёткость, когда речь идёт о числах в разных системах счисления - это не просто количество использованных цифр. Теперь, когда мы это знаем, мы можем уточнить понятие чёткости. Простейший способ сделать это - определить чёткость через точность. Итак, Чёткость числа - это максимальная точность, которую может обеспечить число с таким количеством значащих цифр. Например, если мы записываем рост человека в десятичной системе счисления с использованием одной цифры после запятой, то максимально возможная точность, которую можно получить при записи таких чисел - до 10 сантиметров. Скорее всего, это гораздо менее точно, чем позволяют получить инструменты для измерения роста. Здесь мы видим, что 0.110 метра - это, собственно, само по себе число. В нашем примере 0.110 метра - это самая маленькая разница, которая может возникнуть между двумя разными числами. Самую маленькую разницу очень легко определить для числа в любой системе счисления. Например, если мы записываем рост человека в двоичной системе счисления с использованием одной цифры после запятой, то самая маленькая разница, которая может возникнуть между двумя разными числами составит 0.12. Если записывать три цифры после запятой, то в обоих системах счисления самая чёткость составит соответственно 0.00110 и 0.0012 - как видите, изображения чисел абсолютно одинаковые, меняется только система счисления. Если мы захотим представить рост человека в 25-ричной системе счисления с точностью до трёх цифр после запятой, то чёткость составит, как и в предыдущих случаях, 0.00125. Чтобы понять общую идею, как сравнивать чёткость чисел в разных системах счисления с разным количеством цифр после запятой, начнём со сравнения чёткости чисел в десятичной системе счисления. Например, всем очевидно, что 0.00110 - это гораздо меньше, чем 0.110. Собственно, именно из этого сравнения мы сразу можем сделать вывод, что число 0.34110 - гораздо более чёткое, чем число 0.310. Обратите внимание, что вывод этот мы сделали не на основании сравнения количества цифр после запятой (3 цифры или 1 цифра), а на основании сравнения чёткости (0.00110 меньше, чем 0.110). Используя это простое правило, мы можем легко сравнить чёткость различных чисел, не зависимо от системы счисления. Как Вы думаете, какое из чисел чётче - 0.34110 или 0.10110012? Чтобы ответить на этот вопрос, запишем чёткость этих двух чисел:
0.34110 - представлено с чёткостью 0.00110 Если привести оба числа (0.00110 и 0.00000012) к одной системе счисления, мы сможем их сравнить. В данном случае удобнее всего всё привести к десятичной системе счисления, и тогда мы получим, что в двоичной системе счисления число представлено с чёткостью 0.00000012=0.007812510. 0.007812510 - это больше, чем 0.00110, из этого мы можем сделать вывод, что число в десятичной системе счисления чётче, несмотря даже на то, что в нём использовано меньше цифр (только три), чем в двоичной системе счисления (целых семь цифр после запятой). Чёткость числа в любой системе счисления можно записать при помощи формулы:
Например, чёткость числа 0.34110 - 1/103 = 0.00110, а чёткость числа 0.10110012 - 1/27 = 0.007812510. Используя нашу формулу, можно легко сравнить чёткость этих двух чисел:
Как определить, сколько цифр должно быть в числе, чтобы это число обеспечивало заданную чёткость?С самого начала мы узнали, что многие числа невозможно перевести из одной системы счисления в другую точно. При рассмотрении алгоритма перевода числа из десятичной системы в любую другую, мы видели, что для перевода дробной части нужно выполнять операцию умножения столько раз, сколько цифр после запятой в новой системе счисления мы хотим получить. Сколько же раз нужно выполнить эту операцию умножения? Обычно всё зависит от конкретной решаемой задачи. Например, в компьютерах, при представлении чисел с плавающей точкой, используется мантисса с известным числом разрядов. В таком случае вопрос о том, «сколько разрядов нужно?» не возникает: размерность мантиссы - это и есть количество требуемых разрядов. Если же количество требуемых разрядов не предопределено заранее, и Вам нужно определить, сколько разрядов нужно, то обычно пользуются следующим простым правилом: чёткость числа не должна пострадать. То есть, чёткость числа в системе счисления, в которую Вы переводите, не должна быть хуже чёткости исходного числа. Добиться этого легко, сравнивая чёткости двух чисел. Например, мы хотим перевести число 0.34110 в двоичную систему счисления - сколько нужно двоичных разрядов, чтобы обеспечить чёткость не хуже, чем чёткость исходного числа? Мы можем взять и сравнить чёткость числа в десятичной и в двоичной системах счисления. При этом, поскольку мы не знаем, сколько цифр после запятой будет в двоичной системе счисления, вместо конкретной цифры подставим переменную:
Сравнивая эти две чёткости, мы фактически получим неравенство. Решив это неравенство, мы сможем выбрать такое минимальное n, при котором не пострадает чёткость числа. Самое сложное - это выбрать, какой поставить знак - меньше или больше? Здесь нам на помощь придёт аналогия с десятичной системой счисления. Например, в десятичной системе счисления, наверное, ни у кого не возникнет сомнения, что число 0.001 имеет более высокую чёткость, чем число 0.01. Исходя из этого, мы можем правильно поставить знак сравнения:
Запомнить очень просто: знак сравнения как бы указывает направление, где лучше чёткость. Поставив правильный знак сравнения:
И решив полученное неравенство, получим, что для того, чтобы чёткость числа 0.34110 не пострадала при переводе в двоичную систему счисления, требуется 10 разрядов (10 - это самое маленькое n, при котором будет выполняться это неравенство). Почему не получится повысить точность, повышая чёткость?При переводе чисел из одной системы в другую, часто выполняют проверку, выполняя обратный перевод. Например, по следующей схеме: X10 -> X2 -> X10 При переводе из десятичной системы счисления точность теряется почти всегда. Точность может также теряться и при переводе обратно в десятичную систему счисления. Это означает, что число, которое Вы получите после такого перевода, не будет равно исходному числу точно. Исходное и полученное числа будут равны между собой только с какой-то точностью. При этом важная особенность состоит в том, что для того, чтобы повышать точность этого равенства, нужно повышать чёткость обоих переводов (и прямого, и обратного), а не только какого-то одного. Если в приведённом выше примере Вы уже потеряли точность при переводе в двоичную систему счисления, то дальше, сколько не повышай чёткость при переводе из двоичной в десятичную - точность от этого не улучшится. Например, мы хотим перевести число 0.2310 в двоичную систему счисления, а потом проверить правильность перевода, выполнив обратный перевод. Воспользовавшись приведённым выше алгоритмом, мы можем определить чёткость числа в двоичной системе счисления такой, чтобы она была не хуже исходного числа. Чтобы достаточно чётко представить число 0.2310, в двоичной системе счисления потребуется 7 разрядов. Таким образом, 0.2310 ≈ 0.00111012 (смотрите алгоритм перевода из десятичной системы счисления в любую другую, чтобы понять, как был выполнен перевод). Это двоичное число можно перевести в десятичную систему счисления точно. При обратном переводе получим, что 0.00111012 = 0.226562510 (смотрите алгоритм перевода из любой системы счисления в десятичную). В данном случае равенство точное, так как полученное число в десятичной системе счисления в точности соответствует двоичному числу. Но оно не равно точно исходному числу 0.2310, так как двоичное 0.00111012 - является округлённым. По большому счёту, для целей проверки, нам не требовалось переводить обратно в десятичную систему счисления с точностью до 7 знаков после запятой - достаточно было перевести с точностью до трёх, или даже только до двух знаков после запятой - так как именно такую точность мы заложили, когда выбрали 7 разрядов в двоичной системе счисления. Можно даже сказать, что сама по себе запись: 0.2310 ≈ 0.226562510 выглядит странно. Вполне достаточно оставить только три цифры после запятой: 0.2310 ≈ 0.22610 Последняя модификация: 28.02.09 23:21 Обсуждение статьи в форумеНе проходите мимо! Оставьте Ваш комментарий в форуме! >>> 29.01.11 11:02 Евгений Отличная статья! Очень мне помогла. Но не ясно откуда материал. Обычно в конце статьи приводятся ссылки на литературу, где этот вопрос можно изучить более детально. 21.04.11 13:14 Руслан Отличная статья! Я узнал из неё очень много нового. Спасибо! 18.12.11 08:16 100 dash ричная Итак, выходит что сторичная система счисления - новая сторичная система счисления вместо цифр используeт только латинские буквы,- более ЧЁТКАЯ, чем упомянутые автором? З павагай, Ми (см. Квантофорум Матрица Математика Новая система счисления ) Просмотреть все комментарии в режиме форума. Всего комментариев: 3
|