Компаратор файлов что это
Компаратор - это что такое? Микросхема и принцип работы
Компаратор – это устройство, предназначенное для сравнения каких-либо величин (от лат. comparare – "сравнивать").
Является операционным усилителем с большим коэффициентом умножения. Имеет входы: прямой и инверсный. При необходимости опорный сигнал может быть подключен к любому из них.
Как работает компаратор?
На один из входов подается постоянный сигнал, который называется опорным.
Он используется как образец для сравнения. Ко второму поступает испытуемый сигнал. На выходе стоит транзистор, меняющий свое состояние в зависимости от условий:
- Напряжение прямого входа выше инверсного – транзистор открыт.
- Напряжение инверсного входа выше прямого – закрыт.
Соответственно, выходное напряжение меняется скачком от минимума до максимума, или наоборот.
Применение компаратора
Используются в схемах измерения электрических сигналов и в аналогово-цифровых преобразователях. В логических цепях работают элементы «или» и «не», также являющиеся компараторами. Соответственно, использование этого компонента не ограничивается конкретными примерами, поскольку он применяется повсеместно.
Стоит отметить, что устройство сравнения можно сделать из любого операционного усилителя, но не наоборот. Коэффициент усиления компаратора достаточно высок. Соответственно, его входы очень чувствительны к разнице напряжений между ними. Расхождение в несколько милливольт значительно изменяет напряжение выхода.
Таким образом, компаратор позволяет наблюдать минимальные колебания уровней входных напряжений.
Это делает его незаменимым элементом схем сравнения и измерительных приборов высокой точности:
- индикаторы уровня входящего сигнала;
- металлоискатели;
- микро- и милливольтметры;
- детекторы электромагнитных излучений;
- лабораторные датчики;
- компараторы массы;
- газоанализаторы.
Принцип действия аналогового компаратора
Аналоговый компаратор сравнивает непрерывные сигналы – входной измеряемый и входной опорный.
При медленном изменении входного сигнала, происходит многократное переключение компаратора за малый отрезок времени.
Такое явление называют «электронным дребезгом». Его наличие значительно снижает эффективность сравнения. Поскольку часто повторяющиеся смены состояния выхода, вводят оконечный транзистор в состояние насыщения.
Для уменьшения эффекта «электронного дребезга», в схему вводят ПОС – положительную обратную связь.
Она обеспечивает гистерезис – небольшую разницу между уровнем напряжения включения и отключения.
Некоторые компараторы имеют встроенную ПОС, что уменьшает количество дополнительных элементов построения конструкции.
Особенности цифрового компаратора
Цифровой компаратор – это однобитный аналогово-цифровой преобразователь.
Напряжение выхода представляет либо логический «0», либо «1».
На вход может быть подан как аналоговый, так и цифровой сигнал.
Устройство используется в качестве формирователя импульсов для сопряжения схем датчиков и устройств отображения.
Может применяться для анализа спектра звукового или светового сигнала.
Компаратор – это также логические элементы «или» и «не», используемые в вычислительной технике.
Теоретически при незначительно малых колебаниях уровня входного сигнала, может возникать состояние неопределенности выхода. На практике равенство измеряемого и опорного напряжений не наступает. Поскольку компаратор имеет ограниченный коэффициент усиления или положительную обратную связь.
Компаратор-микросхема
Промышленность выпускает компараторы в виде интегральных схем. Их использование позволяет создавать компактные приборы, с минимумом навесных элементов. Также преимущество малогабаритных деталей в незначительной длине соединительных проводников. В условиях повышенного электромагнитного излучения они являются приемными антеннами для всевозможных электрических помех.
Компаратор на операционном усилителе
У компараторов есть немалое сходство с операционными усилителями:
- коэффициент усиления;
- входное сопротивление;
- значение входных токов;
- состояние насыщения.
Пример практического применения компаратора
На принципиальной схеме представлен датчик освещенности.
Опорное напряжение задается резисторами RV1 и R2. При этом, RV1 служит регулятором чувствительности конструкции. Индикация реализована на светодиоде D1. Датчиком является элемент LDR1, который меняет омическое сопротивление в зависимости от освещенности. Собственно компаратор представлен операционным усилителем LM324. Это простое устройство демонстрирует то, как работает компаратор на практике.
Компараторы массы: понятие
Компаратор массы это устройство, предназначенное для уточнения разности значений массы гирь при контроле стандартов массы и веса, а также, для прецизионного взвешивания. Наиболее точные компараторы массы способны взвесить любой образец и сравнить его с иным, подобным ему. Происходит это на уровне атомов. Необходимость в таких устройствах возникает по причине несовершенства эталонных образцов мер веса и объема жидкости.
Обзор расскажет вам о программах, которые помогут сравнить два текстовых файла и подскажут, где именно были сделаны изменения. Также вы узнаете еще один способ быстро вводить слова при наборе текста, а также о программе, которая показывает весь календарик на любой выбранный год ближайших столетий.
Еще один способ
Чтобы окончательно и бесповоротно добить тему быстрого ввода текста, давайте вернемся к уже рассмотренной ранее утилите AutoWord, о существовании которой напомнил в своем письме Геннадий Симонович.
Итак, программа предназначена для быстрого ввода текста и работает по такому же принципу, что и рассмотренные в предыдущих номерах. То есть после нескольких введенных букв появляется подсказка, которую вы можете принять, тем самым несколько ускорив набор текста.
К программе дополнительно можно скачать словарную базу русского языка, что позволит ей сразу, без обучения, выводить подсказки. Из особенностей AutoWord стоит отметить возможность пополнения имеющегося словаря и поддержку работы с редактором Word, которая зачем-то была отключена в последней версии. Подробности читайте в обзоре "Врачевание без вреда своему здоровью" (см. №35 за 2001 год).
Быстрые месяцы
Месяцы бегут быстро, а еще быстрее летят дни. Если вам захотелось распечатать календарик на весь год или вы хотите точно знать, на какой день недели выпадает тот или иной праздник, то можете воспользоваться услугами программы "Календарь 1900-2099 г.г.".
Необходимо только в окно программы ввести интересующий вас год (как явствует из названия, он должен принадлежать отрезку 1900-2099), как тут же появятся все 12 месяцев, выглядящие точно так же, как и на бумажном аналоге. Как говорит сам автор программы, "я писал эту программу, чтобы иметь под рукой календарь с подсчётом недель и напоминалкой". Да-да! Программа может также своевременно предупреждать о предстоящих праздниках.
После установки "Календарь 1900-2099 г.г." уже включает в себя список праздников России, причем программа позволяет пополнять базу данных памятных дат. При этом все "красные дни календаря", то есть праздничные даты, выделяются в календаре цветом, а чтобы узнать об этом дне подробнее, по нему достаточно щёлкнуть мышкой.
Напоследок остается отметить, что для корректной работы программе потребуется библиотека VB6.
Сравнение текстовых файлов
Идем дальше. Иногда возникает необходимость сравнить два текстовых файла. Как правило, недостаточно сказать, совпадает их содержимое или нет - необходимо еще определить, чем именно они отличаются. Вполне может возникнуть такая ситуация, когда, например, протокольный файл, созданный некой программой, был подвергнут насилию с чей-то стороны, и ваша задача - определить, где произошли изменения (то есть где конкретно удалены знаки или даже строки, а где, наоборот, добавлены). Нет, мы не будем здесь рассматривать алгоритм сравнения файлов (кстати, подозреваю, что это делается с помощью LCS - Largest Common Sequence), а попробуем рассмотреть несколько программных экземпляров, предлагающих решение поставленной задачи.
Стоит заметить, что общее между ними - это внешний вид и принцип работы. Так, любая такая программа содержит два окна, в каждое из которых загружается по файлу. Далее по нажатию кнопки происходит сравнение текстов, и, если найдены различия, они показываются с помощью цвета. При этом каждая строка файла пронумерована, что позволяет быстро сказать, в каком именно месте произошло "вторжение". Скорость работы любой программы довольно высока: даже для текстовых файлов большого объема она составляет порядка 3-4 Мб за несколько секунд. Но довольно слов - ближе к делу!
Самое вкусное. Наверняка все пользователи Windows Commander обрадуются, когда узнают о том, что инструмент сравнения файлов уже изначально встроен в этот файловый менеджер. Вызывается эта утилита через меню "File", пункт "Compare by Content". Интерфейс утилиты довольно прост и содержит все самое необходимое (за это, в принципе, она мне и понравилась), а результаты выводятся в окна только в том случае, если в двух текстах были найдены отличия.
На фоне рассмотренных бесплатных, но при этом функциональных утилит как-то особнячком стоит Active File Compare, автор которой захотел стать оригинальным и брать за регистрацию денежку. При этом Active File Compare ничем особенным от рассмотренных выше разработок не отличается. Разве что стоит отметить встроенный "Менеджер файлов", состоящий из двух панелей, что позволяет сравнивать содержание двух папок.
Вот и все. Думайте, что конкретно вам хотелось бы сравнивать, и выбирайте. Я бы предпочел использовать утилиту в Windows Commander'е.
В вопросе Поиск самой длинной строки я увидел слово компаратор , но поскольку я мало понимаю в программировании, то я не знаю что это может быть. Объясните, пожалуйста.
Ну, например, как выполняется сортировка?
При этом сортируемые элементы сравниваются просто с помощью оператора < . Вот он и есть компаратор по умолчанию. Но если вы хотите какую-то очень хитрую сортировку, то это делается так
где comp и есть компаратор - т.е. функция, функциональный объект, лямбда-выражение - словом, которому можно передать два элемента для сравнения.
Например, по умолчанию сортировка строк будет сравнивать их содержимое. А сортировка
будет сортировать строки по длине.
То же самое можно записать и с обычной функцией:
Компаратор - это специальная функция, которая умеет сравнивать два объекта и решить, больше-меньше-равно.
Зачем это нужно?
Представьте себе, что нужно написать сортировку массива объектов. Нужно будет для каждого нового типа объектов писать свою сортировку (ведь функция сортировки должна уметь сравнивать два объекта). Поэтому, решили, что в сортировку можно передать функцию, которая умеет сделать сравнение, а функция сортировки стает универсальной.
Тут же появляется дополнительная возможность - можно менять функции сортировки, можно искать по массиву, разделять на части.
Сами компараторы бывают двух основных типов.
Первый тип - это компаратор, который возвращает bool. Например, std::less. У этого способа есть одна большущая проблема. Если a > b и b > a, то некоторые функции с++ считают, что a==b. Но это не всегда так.
Второй тип - это такой компаратор, который возвращает -1, 0 и +1 (либо вообще весь диапазон целых). Суть проста - 0 - равно, -1 - первое больше, +1 - второе больше. Пример - strcpm. Только здесь пошли ещё дальше - если число не ноль, то оно не просто показывает позицию первого отличающегося символа. Удобно.
Сейчас Саттер придумал (а точнее, подсмотрел в Perl) оператор космический корабль ( <=> ). Этот оператор работает по второй схеме и решает кучу проблем компаратора первого типа. Детали в предложении.
В Java для введения порядка среди определённых объектов можно написать компаратор — класс, содержащий функцию compare , которая сравнивает два объекта. Альтернативой компаратору является естественный порядок объектов: объект реализует интерфейс Comparable , который содержит метод compareTo , позволяющий сравнить этот объект с другим. Сравнивающая функция должна вернуть 0, если объекты равны, отрицательное число (обычно -1), если первый объект меньше второго, и положительное число (обычно 1), если первый больше. Обычно реализация такой функции не представляет сложностей, но имеется один случай, о котором многие забывают.
Сравнение используется различными алгоритмами от сортировки и двоичного поиска до поддержания порядка в сортированных коллекциях вроде TreeMap . Эти алгоритмы завязаны на три важных свойства сравнивающей функции: рефлексивность (сравнение элемента с самим собой всегда даёт 0), антисимметричность (сравнение A с B и B с A должны дать разный знак) и транзитивность (если сравнение A с B и B с C выдаёт одинаковый знак, то и сравнение A с C должно выдать такой же). Если сравнивающая функция не удовлетворяет этим свойствам, алгоритм может выдать совершенно непредсказуемый результат. Причём скорее всего вы не получите никакого исключения, просто результат будет неверный.
Как обнаружилось, несоблюдение этих свойств — не такая уж редкая ситуация. Проблема возникает при сравнении вещественных чисел — float или double.
Предположим, у нас имеется класс с полем типа double, и мы хотим упорядочивать объекты этого класса в зависимости от значения поля. Нередко можно встретить такой код:
Ни рефлексивности, ни антисимметричности не наблюдается. Можно встретить и такую реализацию сравнения:
Здесь все три предыдущих сравнения выдадут ноль, то есть как будто бы свойства соблюдаются. Но, конечно, радоваться рано:
Здесь нарушается транзитивность: первый объект равен второму, второй равен третьему, но первый третьему не равен.
Чем же это грозит простому обывателю? Чтобы понять это, создадим простой список и попробуем его перемешать и посортировать несколько раз:
Вывод в каждом запуске отличается и может выглядеть, например, так:
Или для второй реализации compareTo :
Примерно в половине случаев элемент с NaN прибивается к началу или концу сортируемого списка, а в других случаях начинает блуждать, портя порядок окружающих элементов.
С коллекциями, использующими DoubleHolder в качестве ключа, тоже ничего хорошего не произойдёт. Возьмём, к примеру, TreeSet . Со второй реализацией compareTo всё довольно просто: так как элемент, содержащий NaN, равен любому другому, то в непустое множество вставить его не получится, потому что оно решит, что такой элемент уже есть. Но берегитесь, если вы вставили NaN-элемент первым: после этого во множество не выйдет добавить ничего другого.
Первый вариант сравнивающей функции психоделичнее. Напишем, например, такой тест:
Мы вставили по пять элементов, содержащих NaN, и по пять элементов, содержащих каждую цифру от 1 до 9. В результате имеем следующее:
Вполне ожидаемо увидеть пять раз NaN: ведь они не равны друг другу. Но из-за неправильных сравнений и некоторые другие элементы вставились по нескольку раз. Можете сами посмотреть, что случится с TreeMap. Заметьте, что один случайно попавший NaN может испортить всю коллекцию, причём это не всегда легко отладить: коллекция может долго существовать в некорректном состоянии и делать вид, что всё нормально.
Видимо, сказывается обманчивая простота алгоритма сравнения: порой программист считает, что проще написать самому, чем искать в документации стандартный способ сделать это.
Примеры неправильного сравнения double/float в различных открытых проектах: JTS, Batik, Hadoop, Hudson, ICU4J, Lucene. Трудно определить, в каких случаях это может привести к проблемам, но это тот случай, когда я бы исправлял безусловно: правильный и надёжный вариант обычно при этом ещё и короче неправильного.
Вообще для всех примитивных типов есть подобные методы. Если вам надо сравнить несколько полей по очереди, можно написать так:
Смотрится лучше, чем куча веток с больше и меньше. А если вы пользуетесь Guava или чем-то подобным, тогда так:
Компаратор – это устройство, предназначенное для сравнения каких-либо величин (от лат. comparare – "сравнивать"). Является операционным усилителем с большим коэффициентом умножения. Имеет входы: прямой и инверсный. При необходимости опорный сигнал может быть подключен к любому из них.
Как работает компаратор?
На один из входов подается постоянный сигнал, который называется опорным. Он используется как образец для сравнения. Ко второму поступает испытуемый сигнал. На выходе стоит транзистор, меняющий свое состояние в зависимости от условий:
- Напряжение прямого входа выше инверсного – транзистор открыт.
- Напряжение инверсного входа выше прямого – закрыт.
Соответственно, выходное напряжение меняется скачком от минимума до максимума, или наоборот.
Напряжение выходных каскадов соответствует входным уровням большинства цифровых микросхем. Это необходимо для случаев, когда компаратор – это формирователь импульса, управляющего работой логических элементов.
Применение компаратора
Используются в схемах измерения электрических сигналов и в аналогово-цифровых преобразователях. В логических цепях работают элементы «или» и «не», также являющиеся компараторами. Соответственно, использование этого компонента не ограничивается конкретными примерами, поскольку он применяется повсеместно.
Стоит отметить, что устройство сравнения можно сделать из любого операционного усилителя, но не наоборот. Коэффициент усиления компаратора достаточно высок. Соответственно, его входы очень чувствительны к разнице напряжений между ними. Расхождение в несколько милливольт значительно изменяет напряжение выхода.
Таким образом, компаратор позволяет наблюдать минимальные колебания уровней входных напряжений. Это делает его незаменимым элементом схем сравнения и измерительных приборов высокой точности:
- индикаторы уровня входящего сигнала;
- металлоискатели;
- микро- и милливольтметры;
- детекторы электромагнитных излучений;
- лабораторные датчики;
- компараторы массы;
- газоанализаторы.
Принцип действия аналогового компаратора
Аналоговый компаратор сравнивает непрерывные сигналы – входной измеряемый и входной опорный. Как работает устройство, показано на графике ниже.
При медленном изменении входного сигнала, происходит многократное переключение компаратора за малый отрезок времени. Такое явление называют «электронным дребезгом». Его наличие значительно снижает эффективность сравнения. Поскольку часто повторяющиеся смены состояния выхода, вводят оконечный транзистор в состояние насыщения.
Для уменьшения эффекта «электронного дребезга», в схему вводят ПОС – положительную обратную связь. Она обеспечивает гистерезис – небольшую разницу между уровнем напряжения включения и отключения. Некоторые компараторы имеют встроенную ПОС, что уменьшает количество дополнительных элементов построения конструкции. Например, при незначительной потери чувствительности, добиваются стабильной работы компаратора.
Особенности цифрового компаратора
Цифровой компаратор – это однобитный аналогово-цифровой преобразователь. Напряжение выхода представляет либо логический «0», либо «1». На вход может быть подан как аналоговый, так и цифровой сигнал. Устройство используется в качестве формирователя импульсов для сопряжения схем датчиков и устройств отображения. Может применяться для анализа спектра звукового или светового сигнала. Компаратор – это также логические элементы «или» и «не», используемые в вычислительной технике.
Теоретически при незначительно малых колебаниях уровня входного сигнала, может возникать состояние неопределенности выхода. На практике равенство измеряемого и опорного напряжений не наступает. Поскольку компаратор имеет ограниченный коэффициент усиления или положительную обратную связь.
Характерным примером является триггер Шмитта (ТШ). У него не совпадают уровни включения и выключения, что определяется ПОС. Это позволяет пренебречь дискретной помехой при работе компаратора.
Компаратор-микросхема
Промышленность выпускает компараторы в виде интегральных схем. Их использование позволяет создавать компактные приборы, с минимумом навесных элементов. Также преимущество малогабаритных деталей в незначительной длине соединительных проводников. В условиях повышенного электромагнитного излучения они являются приемными антеннами для всевозможных электрических помех.
Компаратор на операционном усилителе
У компараторов есть немалое сходство с операционными усилителями:
- коэффициент усиления;
- входное сопротивление;
- значение входных токов;
- состояние насыщения.
Чувствительность, по-другому разрешающая способность, – это специфический параметр. Она определяет точность сравнения. Характеризуется минимальной разностью сигналов, при которой происходит срабатывание компаратора. Ее значение у интегральных микросхем имеет сотен микровольт. Это несколько хуже, чем у компараторов на операционных усилителях.
Время переключения характеризует быстродействие компараторов. Определяется минимальным временем изменения выходного сигнала: от момента сравнения до момента срабатывания. Зависит от разности сигналов на входах. Значения времени переключения составляют десятки и сотни наносекунд.
Как сделать компаратор своими руками?
Кто умеет читать принципиальные схемы и паять, без труда соберет простейшие компараторы для использования в быту. Область применения весьма обширна. На них можно построить массу конструкций с минимальными затратами. Простейший компаратор – это операционный усилитель без положительной обратной связи.
В качестве основы для компаратора используется ОУ серии LM339. Для контроля и наглядности работы схемы введены красный и зеленый индикаторы. При подключении питания на ОУ должен засветиться один из светодиодов, причем какой из них - неважно. Это определяется множеством факторов: сетевые наводки на схему, особенности партии и параметров ОУ. Даже если взять несколько одинаковых микросхем, получатся различные результаты.
Если входной сигнал близок к «0» – будет светиться зеленый, а если близкое к напряжению питания, то красный светодиод. Затем можно попробовать сменить логическое состояние компаратора, подав на один из входов напряжение равное, например, половине напряжения питания ОУ. Сигнал на выходе не зависит от абсолютного значения напряжений на прямом и инверсном входе. А только от разницы напряжений.
Данные опыты демонстрируют работу компаратора без ПОС. Такой компаратор может быть использован там, где не требуется особой точности измерений. Такими приборами являются бытовые термостаты, зарядные устройства для автомобильных аккумуляторов, устройства десульфатации (восстановления) автоаккумуляторов, фотореле.
Пример практического применения компаратора
На принципиальной схеме представлен датчик освещенности.
Опорное напряжение задается резисторами RV1 и R2. При этом, RV1 служит регулятором чувствительности конструкции. Индикация реализована на светодиоде D1. Датчиком является элемент LDR1, который меняет омическое сопротивление в зависимости от освещенности. Собственно компаратор представлен операционным усилителем LM324. Это простое устройство демонстрирует то, как работает компаратор на практике.
Компараторы массы: понятие
Компаратор массы это устройство, предназначенное для уточнения разности значений массы гирь при контроле стандартов массы и веса, а также, для прецизионного взвешивания. Наиболее точные компараторы массы способны взвесить любой образец и сравнить его с иным, подобным ему. Происходит это на уровне атомов. Необходимость в таких устройствах возникает по причине несовершенства эталонных образцов мер веса и объема жидкости.
Примеры и использование устройств уточнения веса
Российским стандартом массы является платиновый цилиндр. Он был скопирован с французского образца 125 лет назад. За прошедшие годы, эталон потерял в виде окислов около 40 мкг от первоначального веса. Соответственно, его использование для нужд производств, с высокой точностью измерения массы сейчас затруднительно.
Был разработан новый стандарт массы. Ученые назначили таковым кремниевый шар с четным количеством атомов. Сейчас это наиболее точный вариант эталона килограмма. Его характеристики приняты международным сообществом для использования.
Созданный образец нуждается в многократном копировании. Так как современные направления в науке, особенно фармакология, биоинженерия, компьютерная электроника, нанотехнологические разработки требуют прецизионной точности измерений. Для таких областей науки и техники критичны сотые доли микрограмма. Эту задачу должен решить атомный компаратор массы – устройство способное определить разницу в несколько частиц.
Атомный компаратор использует для измерений опорный сигнал, полученный от высокоточного кварцевого генератора. Измеряемое напряжение берется с квантового дискриминатора, определяющего стабильность линии мельчайших частиц. Ее изменения вызываются расхождением в количестве атомов образца. Поэтому сейчас – это самый точный прибор измерения.
Существуют и менее точные компараторы массы. Их стоимость гораздо ниже атомных, но для них всех находится работа в промышленности, торговле, стандартизации.
Читайте также: