Назначение компаратора: Страница не найдена — Как Это Работает?

Содержание

Компаратор принцип работы и назначение

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


Поиск данных по Вашему запросу:

Схемы, справочники, даташиты:

Прайс-листы, цены:

Обсуждения, статьи, мануалы:

Дождитесь окончания поиска во всех базах.

По завершению появится ссылка для доступа к найденным материалам.
ПОСМОТРИТЕ ВИДЕО ПО ТЕМЕ: Лекция 27: Компаратор

Схема компаратора с операционным усилителем


Всем доброго времени суток. В предыдущих статьях я рассказывал о применении операционных усилителей в линейных схемах, где ОУ охвачен отрицательной обратной связью, которая позволяет строить усилители, параметры которых будут в основном определяться элементами обвязки ОУ. Данная статья расскажет о применении ОУ без обратной связи или даже с положительной обратной связью ПОС. С учётом вышесказанного можно сделать вывод, что без применения отрицательной обратной связи, которая снижает усиление ОУ в схеме, применение ОУ бесполезно, так как при входных напряжениях в несколько милливольт ОУ войдёт в насыщение с выходным напряжением равным напряжению питания.

Но существуют схемы, в которых операционные усилители применяются без обратной отрицательной связи, а в некоторых случаях специально вводят положительную обратную связь ПОС для увеличения коэффициента усиления схем. Одним из видов таких схем являются пороговые устройства, в состав которых входят различные компараторы, триггеры Шмитта, детекторы уровней напряжения.

Простейшим пороговым устройством является компаратор. Он сравнивает напряжение, которое поступает на один из его входов, с опорным напряжением, которое присутствует на другом его входе.

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

На рисунке изображен компаратор с инвертирующим выходным сигналом по отношению к входному сигналу. Для того, чтобы не происходило инверсии на выходе необходимо поменять подключение выводов ОУ, то есть входной сигнал должен поступать на неивертирующий вход, а опорное напряжение на инвертирующий вывод.

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

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

Для того чтобы происходило сравнение необходимо фактически производить операцию вычитания, то есть напряжения на входах UBX и UПРИВ должны иметь разную полярность. Резистор R3 предназначен для компенсации входного тока смещения и должен быть равен величине параллельно соединённых резисторов R1 и R2. Основным недостатком данной схемы является необходимость использования стабилизированного отрицательного напряжения, что приводит к усложнению схемы. Поэтому одновходовый компаратор не получил широкого распространения.

Наибольшее распространение получила схема двухвходового компаратора, в котором отсутствует необходимость в отрицательном напряжении. Схема данного компаратора приведена ниже.

В основе двухвходового компаратора лежит дифференциальный усилитель, в котором отсутствует отрицательная обратная связь, поэтому разность между входным напряжением UBX и UОП опорным напряжение усиливается ОУ, не имеющего снижения коэффициента усиления из-за отсутствуя ООС, и выделяется на выходе ОУ. В данной схеме входные резисторы R1 и R2 имеют одинаковое значение.

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

Для устранения таких ложных срабатываний компаратора, в его схему вводится некоторый гистерезис, путём добавления положительной обратной связи ПОС к операционному усилителю. В одной из статей я рассказывал о триггере Шмитта выполненном на транзисторах. Он характеризуется тем, что в отличие от компаратора имеет так называемую петлю гистерезиса. То есть компаратор переключается из высокого уровня напряжения в низкий при одной и той же величине входного напряжения, а триггер Шмитта имеет два уровня порога переключения.

Данное различие иллюстрирует изображение ниже. Уровни напряжения, при которых происходит переключение триггера Шмитта называются верхним уровнем порогом срабатывания триггера UВП и нижним уровнем порогом срабатывания триггера UНП. Для реализации триггера Шмитта применяют ОУ охваченные положительной обратной связью ПОС , которая реализуется подачей на неинвертирующий вход части выходного напряжения.

Схема триггера Шмитта изображена ниже. Работа триггера Шмитта во многом похожа на работу компаратора, только в отличие от него в триггере опорное напряжение не постоянно, а зависит от разности выходного и опорного напряжений, то есть имеет различные значения. Рассмотрим инвертирующий триггер Шмитта. Когда входное напряжение достигает верхнего порога переключения UВП выходное напряжение резко упадёт до уровня отрицательного напряжения насыщения UНАС- примерно на 1 — 2 В выше отрицательного напряжения питания UПИТ-.

Нижний порог срабатывания триггера определяется следующим выражением. Триггеры Шмитта на ОУ являются основой для построения различных генераторов импульсов, поэтому важнейшими характеристиками ОУ работающих в импульсных схемах является быстродействие, которое зависит от задержек срабатывания и времени нарастания выходного напряжения.

Для устранения вышеописанных проблем применяют так называемую привязку или ограничение уровня выходного напряжения, для этого в компаратор или триггер Шмитта вводят ООС в виде различных схем ограничения. Простейшими ограничительными схемами являются диоды или стабилитроны. Схема триггера Шмитта с ограничение выходного напряжения показана ниже. Ограничение выходного напряжения в триггере Шмитта работает следующим образом. При поступлении на инвертирующий вход напряжения меньше, чем напряжение опорного уровня UВХ В случае если входное напряжение начнёт увеличиваться, выше опорного напряжения, то на выходе напряжение начнёт уменьшаться и в этом случае направление тока через стабилитрон начнёт изменяться на противоположный, а стабилитрон начнёт вести себя как диод.

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

В данной схеме реализуется симметричное ограничение выходного напряжения относительно опорного напряжения, причем выходное напряжение выше опорного напряжения ограничивается стабилитроном VD1, а напряжение при этом составит на 0,7 В больше напряжения стабилизации. В случае же выходного напряжения ниже опорного, то выходное напряжение будет на 0,7 В ниже напряжения стабилизации стабилитрона VD2. Теория это хорошо, но без практического применения это просто слова. Здесь можно всё сделать своими руками.

Компаратор — это устройство, предназначенное для сравнения каких-либо величин от лат. Является операционным усилителем с большим коэффициентом умножения. Имеет входы: прямой и инверсный. При необходимости опорный сигнал может быть подключен к любому из них.

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

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

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

Таким образом, компаратор позволяет наблюдать минимальные колебания уровней входных напряжений. Это делает его незаменимым элементом схем сравнения и измерительных приборов высокой точности:. Аналоговый компаратор сравнивает непрерывные сигналы — входной измеряемый и входной опорный. Как работает устройство, показано на графике ниже. При медленном изменении входного сигнала, происходит многократное переключение компаратора за малый отрезок времени. Его наличие значительно снижает эффективность сравнения.

Поскольку часто повторяющиеся смены состояния выхода, вводят оконечный транзистор в состояние насыщения. Она обеспечивает гистерезис — небольшую разницу между уровнем напряжения включения и отключения. Некоторые компараторы имеют встроенную ПОС, что уменьшает количество дополнительных элементов построения конструкции. Например, при незначительной потери чувствительности, добиваются стабильной работы компаратора. Цифровой компаратор — это однобитный аналогово-цифровой преобразователь.

На вход может быть подан как аналоговый, так и цифровой сигнал. Устройство используется в качестве формирователя импульсов для сопряжения схем датчиков и устройств отображения. Может применяться для анализа спектра звукового или светового сигнала. Теоретически при незначительно малых колебаниях уровня входного сигнала, может возникать состояние неопределенности выхода. На практике равенство измеряемого и опорного напряжений не наступает.

Поскольку компаратор имеет ограниченный коэффициент усиления или положительную обратную связь. Характерным примером является триггер Шмитта ТШ. У него не совпадают уровни включения и выключения, что определяется ПОС. Это позволяет пренебречь дискретной помехой при работе компаратора. Промышленность выпускает компараторы в виде интегральных схем.

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

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


Сумматоры и цифровые компараторы: принцип работы, схемы

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

Принцип действия приборов с зарядовой связью: БИСПИН -назначение, свойства Аналоговый интегральный компаратор: определение, примеры.

Компараторы и триггеры Шмитта на ОУ

Основы электроакустики Путь к качественному звуку. Аналоговые компараторы напряжения предназначены для определения момента равенства двух напряжений и выработки цифровых выходных сигналов 0 или 1 в зависимости от знака разности сравниваемых сигналов. Компаратор представляет собой одноразрядный аналого-цифровой преобразователь. По сути дела, компаратор напряжения чувствителен к полярности напряжения, приложенного между его сигнальными входами. Напряжение на выходе компаратора будет иметь высокий уровень всякий раз, когда разность напряжений между неинвертирующим и инвертирующим сигнальными входами положительна и, наоборот, когда разностное напряжение отрицательно, выходное напряжение компаратора соответствует логическому нулю. Графическая зависимость выходного напряжения от разности входных сигналов и условное графическое обозначение компаратора приведены на рис. Помимо основных сигнальных входов и выходов, компараторы напряжения могут иметь служебные входы различного назначения: балансировки, стробирования, согласования уровней и др.

Лекция №13. Компаратор с гистерезисом

Компаратор лат. Компаратор выдает высокое напряжение логическая 1 в случае, если напряжение на первом прямом входе выше, чем на втором инвертирующем и низкое выходное напряжение логический 0 если напряжение первого входа ниже вольтажа второго. Одно из напряжений сигналов , подаваемое на один из входов компаратора обычно называют опорным или пороговым напряжением. Пороговое напряжение делит весь диапазон входных напряжений, подаваемых на другой вход компаратора на два поддиапазона. Состояние выхода компаратора, высокое или низкое, указывает, в каком из двух поддиапазонов находится входное напряжение.

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

Компаратор схема и принцип работы

Всем доброго времени суток. В предыдущих статьях я рассказывал о применении операционных усилителей в линейных схемах, где ОУ охвачен отрицательной обратной связью, которая позволяет строить усилители, параметры которых будут в основном определяться элементами обвязки ОУ. Данная статья расскажет о применении ОУ без обратной связи или даже с положительной обратной связью ПОС. С учётом вышесказанного можно сделать вывод, что без применения отрицательной обратной связи, которая снижает усиление ОУ в схеме, применение ОУ бесполезно, так как при входных напряжениях в несколько милливольт ОУ войдёт в насыщение с выходным напряжением равным напряжению питания. Но существуют схемы, в которых операционные усилители применяются без обратной отрицательной связи, а в некоторых случаях специально вводят положительную обратную связь ПОС для увеличения коэффициента усиления схем. Одним из видов таких схем являются пороговые устройства, в состав которых входят различные компараторы, триггеры Шмитта, детекторы уровней напряжения.

Компаратор. Описание и применение. Часть 1

Компаратором называется устройство сравнения двух аналоговых сигналов, один из которых может быть задан как эталонный. Эти условия записываются следующим образом:. В общем случае напряжение U ВЫХ может отличаться как по величине, так и по знаку. Поэтому можно сказать, что входной сигнал компаратора носит аналоговый характер, а выходной — цифровой. На рисунке 4. При нарушении условия 4.

Как устроены и в чем состоит принцип работы компараторов? соединили в себе свойства аналоговых и цифровых схем, а их основное назначение.

Принцип работы компаратора напряжения

Схема компаратора, поясняющая его работу при сравнении сигналов одной полярности, представлена на рис. Оно здесь положительной полярности и подано на неинвертирующий вход, поэтому на выходе уровень логической единицы U 1. При увеличении сигнала U х , в данном случае положительной полярности, величина дифференциального сигнала, определяемая потенциалами точек А и Б: уменьшается и когда U х станет больше или равно U оп происходит смена полярности дифференциального сигнала и за счет большого K u компаратор резко переключается. Если нужна противоположная характеристика преобразования, надо или поменять полярности U х и U оп , если это возможно, если нет, то надо поменять местами точки подключения U х и U оп.

Компаратор напряжения: как работает и примеры схем

Чтобы управлять компонентами электронных схем, используют разные приспособления, которые могут осуществлять настройку и разделять сигналы. Для быстрого сравнения нескольких различных импульсов принято использовать специальный компаратор с однополярным питанием. Оглавление: Основные технические характеристики Типы компараторов Аналоговый компаратор Компаратор на операционном усилителе Недостатки устройства на операционном усилителе Как работает компаратор Назначение и применение компаратора. Компаратором называется устройство , сравнивающее несколько напряжений и силу электрического тока, выдающее окончательный силовой сигнал, указывающее на наибольшее значение параметров и одновременно делающее точный расчет их соотношения.

Электрика и электрооборудование, электротехника и электроника — информация!

Компаратор

Микроконтроллеры Microchip используются во многих устройствах, начиная от пожарных датчиков и заканчивая промышленной и автомобильной электроникой. Перезаписываемая память программ и широкий выбор инструментальных средств внутрисхемный отладчик ICD2, внутрисхемное программирование, эмулятор ICE делают эти контроллеры незаменимыми для любых типов встраиваемых систем. Приемы и трюки, рассмотренные ниже, помогут полностью использовать потенциал компараторов, как дискретных, так и встроенных в микроконтроллеры Microchip PIC. При работе системы от батареи важно знать, когда напряжение батареи снижается ниже допустимого уровня. Однако, если его нет составе периферии контроллера, то можно построить простейшую схему на основе встроенного компаратора и нескольких внешних элементов. При питании микроконтроллера стабилизированным напряжением используется схема, указанная на рисунке 1, при нестабилизированном питании используется схема на рисунке 2.

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


Компараторы массы: описание и область применения

Для успешной работы лабораторий важна высокая точность используемых измерительных приборов. Это в первую очередь касается промышленных производств, метрологических служб, ювелирных заводов и других сфер деятельности, где малейшие погрешности могут негативным образом сказаться на результате работы. Такие измерительные приборы должны быть не только точными, но и надежными, функциональными, учитывающими все тонкости проведения взвешивания. Именно такими и являются компараторы массы, обладающие широкий сферой применения в лабораторных условиях и на производстве.

Принцип работы

Компараторы массы – сверхточные устройства для измерения массы. Процесс взвешивания происходит при помощи метода сличения. В основе работы прибора лежит электромагнитная компенсация веса с дальнейшей обработкой полученного сигнала. Особенностью такого способа взвешивания является полное отсутствие влияния на процесс сличения массы магнитных реакций.

Конструкция имеет встроенные датчики массы, которые гарантируют максимальный показатель точности измерения. Система обеспечивает минимальный риск деформации, смещения от центра и других проблем, которые негативным образом сказываются на точности измерения.

Особенности конструкции и работы устройства

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

В зависимости от сферы назначения и необходимой точности измерения компараторы массы имеют такие параметры:

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

Стандартный компаратор массы включает в себя такие конструкционные элементы:

  • соединяемые между собой блоки;
  • кабель для соединения блоков;
  • дисплей для считывания результатов измерения;
  • калибровочные гири;
  • двунаправленный интерфейс, позволяющие подключать устройство к персональному компьютеру и другим внешним устройствам;
  • ветрозащитные витрины.

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

Преимущества компараторов

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

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

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

Сфера применения

Компараторы обладают широкой сферой применения:

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

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

72386-18: MC Весы с функцией компаратора

Назначение

Весы МС с функцией компаратора (далее — весы) предназначены для поверки и калибровки гирь методом сличения эталонных и рабочих гирь, а также для измерений массы.

Описание

Принцип действия весов основан на компенсации массы взвешиваемого груза электромагнитной силой, создаваемой системой автоматического уравновешивания. Электрический сигнал, изменяющийся пропорционально массе взвешиваемого груза, преобразуется в цифровой код. Результаты взвешивания выводятся на дисплей.

Модификации весов кроме MC-100KS выполнены в едином корпусе (рисунок 1, а) и включают в себя следующие части: грузоприемное устройство, грузопередающее устройство, весоизмерительное устройство с показывающим устройством. Весы модификации MC-100KS имеют выносной блок с показывающим устройством (рисунок 1, б). Весы модификаций МС-10К, МС-30К оснащаются ветрозащитной витриной из полимерного материала (рисунок 1, в). Весы модификаций МС-1000 и MC-6100 оснащаются ветрозащитным стеклянным боксом (рисунок 1, г).

Общий вид весов представлен на рисунке 1.

Питание весов осуществляется через адаптер сетевого питания. Весы снабжены следующими устройствами:

—    устройство установки по уровню;

—    полуавтоматическое устройство установки нуля;

—    устройство выборки массы тары;

—    устройство передачи данных.

Весы оснащены последовательным интерфейсом передачи данных RS232C.

Весы снабжены следующими функциями:

—    подсчет количества образцов;

—    взвешивание в процентах;

—    управление временем компарирования;

—    внутренняя калибровка.

Весы выпускаются в следующих модификациях: МС-10К, МС-30К, МС-1000, МС-6100, MC-100KS, отличающихся метрологическими характеристиками, массой и габаритными размерами.

Место нанесения свинцовой пломбы

Программное обеспечение

Программное обеспечение (далее — ПО) весов является встроенным.

Идентификационным признаком ПО служит номер версии, который отображается на дисплее весов при их включении.

Защита от несанкционированного доступа к настройкам и данным измерений обеспечивается защитной пломбой, которая находится на задней поверхности корпуса (как показано на рисунке 2). Защитная пломба ограничивает доступ к переключателю юстировки, при этом ПО также не может быть модифицировано без нарушения защитной пломбы и установки переключателя юстировки в положение «ON». Кроме того, изменение ПО невозможно без применения специализированного оборудования производителя.

Защита ПО от непреднамеренных и преднамеренных воздействий по Р 50.2.077-2014 соответствует уровню «высокий».

Идентификационные данные (признаки)

Значение

Модификация

МС-1000, МС-6100

МС-10К, МС-30К, MC-100KS

Наименование ПО

Идентификационное наименование ПО

Номер версии (идентификационный номер) ПО

P-4.10; P-4.11; P-4.20.

P-2.10; P-2.11; P-2.12; P-2.20.

Цифровой идентификатор ПО

Алгоритм вычисления цифрового идентификатора ПО

Технические характеристики

Таблица 2 — Метрологические характеристики

Наименование характеристики

MC-100KS

МС-10К

МС-30К

Наибольшая допускаемая нагрузка, г

101000

10100

31000

Дискретность отсчета, d, г

0,1

0,001

0,01

Среднее квадратическое отклонение результата измерений разности масс (СКО) для пяти циклов АВА, г, не более

0,1- до 60 кг включ. 0,2- св. 60 кг до 100 кг включ.

0,0015 — до 2 кг включ. 0,004- св. 2 кг до 5 кг включ.

0,005- св.5 кг до 10 кг включ.

0,015- до 20 кг включ. 0,10 — св. 20 кг до 30 кг включ.

Пределы допускаемой погрешности от нелинейности, г

±2

±0,03

±0,2

Таблица 3 — Метрологические ха

рактеристики

Наименование характеристики

МС-1000

МС-6100

Наибольшая допускаемая нагрузка, г

1100

6100

Дискретность отсчета, d, г

0,0001

0,001

Среднее квадратическое отклонение результата измерений разности масс (СКО) для пяти циклов АВА, г, не более

0,0004- до 500 г включ. 0,0005- св. 500 г до 1 кг включ.

0,0015- до 2 кг включ. 0,004-св. 2 кг до 5 кг включ.

Пределы допускаемой погрешности от нелинейности, г

±0,003

±0,03

Таблица 4 — Основные технические характеристики

Наименование характеристики

MC-100KS

МС-10К МС-30К

МС-1000

МС-6100

Габаритные размеры, Д*В*Ш, мм, не более

346х443х130

300х355х111

210х317х86

Масса, кг, не более

18

9,3

4,6

5,1

Относительная влажность, %

85

Диапазон температур, °C

от +5 до +40

Время стабилизации показаний, с, не более

1,5

Электрическое питание от сети переменного тока с параметрами: напряжение, В частота, Гц

от 187 до 242 50

Обозначение модификации

Класс точности поверяемых гирь по ГОСТ OIML R 111-1-2009

Номинальные значения массы поверяемых гирь

МС-1000

M1

M2

от 20 кг до 100 кг вкл.

от 10 кг до 100 кг вкл.

F1

от 2 кг до 10 кг вкл.

МС-10К

F2

от 1 кг до 10 кг вкл.

M1

от 200 г до 10 кг вкл.

M2

от 50 г до 10 кг вкл.

F1

20 кг

МС-30К

F2

от 10 кг до 20 кг вкл.

M1

от 2 кг до 20 кг вкл.

M2

от 1 кг до 20 кг вкл.

F1

от 500 г до 1 кг вкл.

МС-1000

F2

от 50 г до 1 кг вкл.

M1

л.

к

в

г

к

о

д

г

т

о

M2

от 100 мг до 1 кг вкл.

F1

от 2 кг до 5 кг вкл.

МС-6100

F2

от 1 кг до 5 кг вкл.

M1

от 200 г до 5 кг вкл.

M2

от 50 г до5 кг вкл.

Знак утверждения типа

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

Комплектность

Таблица 6 — Комплектность поставки весов модификации MC-1000, MC-6100, MC-ЮК, МС-30К, MC-100KS_

Наименование

Количество

Весы

1 шт.

1 шт.

Направляющая автоцентрируемой чаши1

1 шт.

Автоцентрируемая чаша1)

1 шт.

Адаптер сетевого питания

1 шт.

Руководство по эксплуатации

1 экз.

Методика поверки МП 204-14-2016

1 экз.

Примечания:

1)    Кроме MC-100KS

2)    Поставляется только с модификациями MC-1000/6100

3)    Поставляется только с модификациями MC-10K/30K

Поверка

осуществляется по документу МП 204-09-2018 «Весы MC с функцией компаратора. Методика поверки», утвержденному ФГУП «ВНИИМС» 21.06.2018 г.

Основные средства поверки: гири, соответствующие классу точности F2 по ГОСТ OIML R 111-1-2009.

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

Знак поверки наносится на свидетельство о поверке.

Сведения о методах измерений

приведены в эксплуатационном документе.

Нормативные документы

ГОСТ 8.021-2015 «ГСИ. Государственная поверочная схема для средств измерений массы» Техническая документация фирмы-изготовителя

LM339QT, Аналоговый компаратор, Низкая Мощность, 4 Компаратора, 300 нс, 2В до 36В, ± 1В до ± 18В, VFQFPN, ST Microelectronics

Минимальная Рабочая Температура 0 C
Максимальная Рабочая Температура 70 C
Время Реакции 300нс
Количество Выводов 16вывод(-ов)
Уровень Чувствительности к Влажности (MSL) MSL 1 — Безлимитный
Тип Выхода Микросхемы КМОП, DTL, ECL, MOS, TTL
Диапазон Напряжения Питания 2В до 36В, ± 1В до ± 18В
Тип Компаратора Низкая Мощность
Количество Компараторов 4 Компаратора
Стиль Корпуса Компаратора VFQFPN
Base Product Number LM339 ->
Current — Quiescent (Max) 2.5mA
ECCN EAR99
HTSUS 8542.33.0001
Moisture Sensitivity Level (MSL) 1 (Unlimited)
Mounting Type Surface Mount
Number of Elements 4
Output Type CMOS, DTL, ECL, MOS, Open-Collector, TTL
Package Tape & Reel (TR)Cut Tape (CT)Digi-ReelВ®
Package / Case 16-VFQFN Exposed Pad
REACH Status REACH Unaffected
RoHS Status ROHS3 Compliant
Supplier Device Package 16-QFN (3×3)
Type General Purpose
Voltage — Supply, Single/Dual (В±) 2V ~ 36V, В±1V ~ 18V
ECCN (US) EAR99
EU RoHS Compliant
Lead Shape No Lead
Manufacturer Type Voltage Comparator
Maximum Dual Supply Voltage (V) ±16
Maximum Input Bias Current (uA) 0.25 5V
Maximum Input Offset Voltage (mV) 5 5V
Maximum Operating Supply Voltage (V) 32|±16
Maximum Operating Temperature (°C) 70
Maximum Quiescent Current (mA) 2 5V
Maximum Single Supply Voltage (V) 32
Maximum Test Temperature (°C) 70
Minimum Dual Supply Voltage (V) ±1
Minimum Operating Temperature (°C) 0
Minimum Single Supply Voltage (V) 2
Minimum Test Temperature (°C) 0
Mounting Surface Mount
Number of Channels per Chip 4
Packaging Tape and Reel
Part Status Active
PCB changed 16
Pin Count 16
Power Supply Type Dual|Single
Process Technology Bipolar
Rail to Rail No
Standard Package Name QFN
Supplier Package QFN EP
Typical Dual Supply Voltage (V) ±15|±12|±9|±5|±3
Typical Output Current (mA) 16 5V
Typical Response Time (us) 1.3
Typical Response Time Range (us) 0.5 to 5
Typical Single Supply Voltage (V) 28|24|18|15|12|9|5|3
Typical Voltage Gain (dB) 106.02
Typical Voltage Gain Range (dB) 90 to 110
Вес, г 2

Однопороговый компаратор

Аналоговые компараторы

Компаратор – это устройство для сравнения двух сигналов. Если в процессе изменения входных сигналов один превышает другой, то компаратор изменяет свое состояние на противоположное. Чаще всего из двух входных сигналов один имеет фиксированное значение, это опорный сигнал – Uоп, который определяет уровень срабатывания компаратора. Другой входной сигнал Uвх может непрерывно меняться. Выходной сигнал компаратора Uвых может принимать значение логического нуля или логической единицы в зависимости от того, меньше или больше Uвх относительно Uоп. При этом компаратор может перестраиваться в процессе работы на различные уровни срабатывания путем изменения опорного напряжения Uоп. Таким образом, аналоговый компаратор преобразует непрерывный входной сигнал в дискретный (цифровой).

Области применения компараторов:

1) Для дискретизации уровня входного сигнала в АЦП.

2) В позиционных регуляторах и сигнальных устройствах технологических параметров.

3) Для сортировки деталей на 2 или 3 группы («норма», «меньше», «больше»).

4) Системы импульсно фазового управления (СИФУ).

5) В преобразователях напряжение — частота.

Существуют три разновидности аналоговых компараторов:

1) однопороговые

2) регенеративные

3) двухпороговые

Аналоговые компараторы выполняются в виде типовой ИС, имеющей повышенное быстродействие (К597СА1), а также могут выполняться на основе усилителя с навесными элементами.

Однопороговый компаратор

Схема однопорогового компаратора:

Назначение элементов в схеме:

R1, R2 – резисторы для выравнивания входных токов ОУ (при отсутствии или равенстве входных сигналов) и уменьшения погрешности компаратора за счет уменьшения напряжения смещения Uсм

При исполнении ОУ на ПТ резисторы R1 и R2 отсутствуют

R3 – потенциометр для установки опорного напряжения Uоп, а в конечном итоге, для перестройки компаратора на различные уровни срабатывания

R4 – задает рабочий ток стабилитрона VD2

R5 – обеспечивает согласование компаратора по сопротивлению с ЛЭ ТТЛ (R5 = 390÷560 Ом) или ЛЭ КМОП (R5 = 10÷20 кОм)

DA1 – повышает чувствительность компаратора и обеспечивает функцию переключения выходного напряжения при сравнении входных сигналов

VD1 – исключает отрицательное напряжение на выхо­де компаратора

VD2 – нормирует уровень напряжения на выходе компаратора. В данной схеме Uвых = Uст. Если компаратор исполняется на ЛЭ КМОП, то VD2 может отсутствовать.

 

Статическая характеристика:

Uвых = f (Uвх)

 

Принцип действия:

1) Когда входной сигнал находится в диапазоне 0≤Uвх<Uоп ОУ переключается на максимальное положительное напряжение UОУ = +UОУ макс. Диод VD1 открывается и на выходе компаратора формируется сигнал логической единицы: Uвых = U1вых = Uст.

При использовании на выходе ЛЭ КМОП U1вых+ UОУ макс (т.к. VD2 и R4 отсутствуют).

2) Когда Uвх≥Uоп меняется знак разности на входах ОУ и ОУ переключается в другое крайнее состояние: UОУ = -UОУ макс. Диод VD1 закрывается и на выходе компаратора формируется сигнал логического единицы: Uвых = U0вых ≈0.

Точность компаратора:

Точность срабатывания компаратора определяется напряжением смещением нуля ОУ, а так же температурным и временным дрейфом этого напряжения: Uсм, ∆UТсм, ∆Utсм. На точность компаратора также влияет коэффициент усиления ОУ kо.

Точность компаратора нормируется параметром «порог чувствительности» U0, который показывает на сколько отличается фактическое напряжение переключения Uп от заданного Uоп.

U0 = |Uоп — Uп|

U0 = Uсм + ∆UТсм + ∆Utсм + UОУ макс / kо

Влияние первой составляющей Uсм можно компенсировать настройкой ОУ. Составляющую ∆UТсм можно уменьшить введением терморезисторов, установленных в соответствующем месте схемы, а также путем термостатирования ОУ. Влияние четвертой составляющей можно уменьшить выбором большего значения kо (от 500 000). Влияние составляющей ∆Utсм компенсировать невозможно, т.к. она имеет случайный характер.

Быстродействие компаратора:

Быстродействие компаратора характеризуется временем восстановления tв. Время восстановления – это часть переходного процесса, при котором выходной сигнал Uвых(t) достигает величины, соответствующей порогу срабатывания ЛЭ ТТЛ (Uср ≈1,5 В). При этом на вход компаратора подается нормированный перепад напряжения ∆Uвх = 0,05 В.

Практически на tв основное влияние оказывает частота единичного усиления f1 ОУ, а также емкость нагрузки Сн.

В специализированных компараторах на ИС время восстановления tв очень мало. Для К597СА1 tв ≤10 мс.

Однако использование ОУ с навесными элементами вместо интегральных компараторов оказывается предпочтительным, когда тре­буется высокая точность сравнения сигналов (десятки микровольт), малое потребление мощности и широкие функциональные возможности схемы.

 


Автомобильный компаратор напряжения

Корзина пуста

 

Назначение и принцип действия

 

Автомобильный компаратор напряжения (MVC) служит для управления включением дополнительных нагрузок в бортовой сети автомобиля при достижении порогового напряжения (например, подключение дополнительного аккумулятора аудио/видео комплекса).

 

В состав MVC входит 2 компаратора: «быстрого» реагирования (время реакции составляет около 0,2 секунды) и «медленного» реагирования (время реакции — 1,5 минуты).

 

При достижении порогового значения напряжения включения на выходе «быстрого» реагирования (выход 1) низкий уровень появится через 0,2-0,3 секунды, и одновременно загорится красный LED-индикатор. На выходе «медленного» реагирования (выход 2) низкий уровень появится через 80-100 секунд, и включится зеленый LED-индикатор.

 

При уменьшении напряжения до напряжения выключения компаратора (на 0,4 V меньше напряжения включения) выход 1 выключится через 0,2-0,3 секунды, а выход 2 – через 15 секунд.

Скачать инструкцию


Изменено: Суббота, 26 Март 2022 12:02

Наши бренды

nRF52: COMP, компаратор | arm

Компаратор (COMP) сравнивает одно входное напряжение (VIN+) с другим входным напряжением (VIN-). VIN+ может быть получено с любого аналогового входа (выводы AIN0 .. AIN7). VIN- может получать уровень из нескольких источников, в зависимости от рабочего режима компаратора.

Примечание: новые термины и сокращения см. в Словарике [2].

Основные функции и возможности компаратора следующие.

• Диапазон входного напряжения от 0V до VDD.

• Не дифференциальный режим (Single-ended mode), гибко настраиваемый гистерезис на основе 64-уровневого делителя.

• Дифференциальный режим, конфигурируемый гистерезис 50 mV.

• Входы опорного напряжения (VREF):
  — VDD.
  — Внешнее напряжение, поданное на один из выводов AIN0 .. AIN7 (с уровнем от 0V до VDD).
  — Внутренние уровни опорного напряжения 1.2V, 1.8V и 2.4V.

• Три режима с разным соотношением скорость/потребление тока: low-power, normal и high-speed.

• Поддержка одноконтактного емкостного датчика.

• Генерация события от изменения на выходе:
  — Событие UP, когда VIN- > VIN+.
  — Событие DOWN, когда VIN- < VIN+.
  — Событие CROSS при пересечении уровней VIN+ и VIN-.
  — Событие READY на готовности ядра и внутреннего опорного напряжения (если оно используется).

Рис. 1. Общая блок-схема компаратора.

Будучи разрешенным (с помощью регистра ENABLE), компаратор запускается путем активации задачи START, и останавливается активацией задачи STOP. После  того, как пройдет время запуска tCOMP,START, компаратор сгенерирует событие READY, чтобы показать свою готовность к работе, и что уровень на его выходе корректен. Когда модуль COMP запущен, события будут генерироваться каждый раз, когда пересекаются изменения уровней VIN+ и VIN-.

[Рабочие режимы компаратора]

Компаратор может быть сконфигурирован для работы в двух основных рабочих режимах, дифференциальный режим и не дифференциальный (single-ended) режим. Для дополнительной информации см. описание регистра MODE. В этих обоих рабочих режимах компаратор может работать на трех разных скоростях, отличающихся соотношением времени реакции и тока потребления (low-power, normal и high-speed). Режим high-speed потребляет больше тока, чем режим low-power, и в режиме low-power компаратор будет срабатывать медленнее, чем в режиме high-speed.

Регистр PSEL используется для выбора любого из выводов AIN0 .. AIN7 в качестве входа VIN+, независимо от выбранного режима работы компаратора. Источник сигнала для VIN- зависит от используемого рабочего режима:

Дифференциальный режим. Сигнал на VIN- поступает поступает непосредственно от одного из выводов AIN0 .. AIN7.
Недифференциальный (single-ended) режим. Сигнал для VIN- берется от VREF. VREF может быть получен от уровней VDD, AIN0 .. AIN7, или от внутренних уровней опорного напряжения 1.2V, 1.8V и 2.4V.

Выбранные аналоговые выводы будут захвачены компаратором, как только он разрешен.

Опционально может быть разрешен гистерезис на VIN+ и VIN-, когда модуль COMP используется в дифференциальном режиме. Гистерезис настраивается регистром HYST. В недифференциальном режиме пороги VUP и VDOWN могут быть установлены для реализации гистерезиса, который основан на цепочке эталонных резисторов (см. рис. 4). Этот гистерезис имеет величину порядка 50 mV, и он должен предотвращать шум на сигнале, который может создавать лишние нежелательные события. См. рис. 5, где показана работа гистерезиса на входном сигнале, загрязненном шумом.

Пересечение входных уровней в положительном направлении (когда VIN+ становится больше VIN-) генерирует событие UP и пересечение входных уровней в отрицательном направлении (когда VIN- становится больше VIN+) генерирует событие DOWN. Событие CROSS генерируется всякий раз, когда происходит пересечение входных уровней, независимо от направления.

Немедленное значение на выходе компаратора может быть взято чтением регистра RESULT путем активации задачи SAMPLE.

Дифференциальный режим. В этом режиме на вход VIN- (опорное напряжение) сигнал поступает непосредственно с одной из аналоговых ножек AINx.

Перед разрешением компаратора с помощью регистра ENABLE в дифференциальном режиме должны быть сконфигурированы регистры PSEL, MODE и EXTREFSEL.

Рис. 2. Компаратор в дифференциальном режиме.

Ограничение: в зависимости от устройства, не все аналоговые входы могут быть доступны для каждого MUX. Для дополнительной информации по доступности аналоговых выводов для каждого чипа см. определения для PSEL и EXTREFSEL.

При включении регистра HYST в этом режиме выход компаратора (и соответствующие события) будет менять свой уровень с ABOVE («выше») на BELOW («ниже») всякий раз, когда уровень VIN+ становится ниже уровня VIN- на величину (VDIFFHYST / 2). Также уровень на выходе поменяется с BELOW на ABOVE всякий раз, когда уровень на VIN+ станет больше уровня VIN- на величину (VDIFFHYST / 2). Это поведение показано на рис. 3.

Рис. 3. Работа гистерезиса в дифференциальном режиме.

Недифференциальный режим. В этом режиме сигнал VIN- формируется от уровней на внутреннем лестничном делителе из образцовых резисторов.

Перед разрешением компаратора с помощью регистра ENABLE в недифференциальном режиме должны быть сконфигурированы регистры PSEL, MODE, REFSEL, EXTREFSEL, TH.

Лестничный делитель использует опорное напряжение (VREF) для получения двух новых опорных напряжений: VUP и VDOWN. Напряжения VUP и VDOWN конфигурируются полями THUP и THDOWN и соответственно, которые находятся в регистре TH. VREF может быть получено от любого из доступных источников опорного напряжения, что конфигурируется регистрами EXTREFSEL и REFSEL, как показано на рис. 4. Когда в регистре REFSEL выбрано опорное напряжение AREF, регистр EXTREFSEL используется для выбора одного из аналоговых выводов AIN0 .. AIN7 в качестве входа для опорного напряжения. Выбранные аналоговые выводы будут захвачены компаратором, как только он разрешен.

Рис. 4. Компаратор в недифференциальном (single-ended) режиме.

Ограничение: в зависимости от устройства, не все аналоговые входы могут быть доступны для каждого MUX. Для дополнительной информации по доступности аналоговых выводов для каждого чипа см. определения для PSEL и EXTREFSEL.

Когда компаратор детектирует, что VIN+ > VIN-, например уровень на выходе стал выше (ABOVE), чем показывает регистр RESULT, VIN- переключится на VDOWN. Когда уровень VIN+ снова упадет ниже VIN-, VIN- переключится обратно на VUP. Путем указание VUP больше, чем VDOWN, может быть получен гистерезис, как показано на рисунках 5 и 6.

В недифференциальном режиме запись в регистр HYST не дает никакого эффекта, и содержимое этого регистра игнорируется.

Рис. 5. Пример гистерезиса, когда VIN+ начинается с уровня ниже VUP.

Рис. 6. Пример гистерезиса, когда VIN+ начинается с уровня выше VUP.

[Регистры компаратора]

Таблица 1. Экземпляры COMP.

Баз. адрес Периф. устройство Экз. Описание Конфигурация
0x40013000 COMP COMP Компаратор общего назначения  

Таблица 2. Обзор регистров COMP.

Регистр Смещ. Описание
TASKS_START 0x000 Задача запуска компаратора.
TASKS_STOP 0x004 Задача остановки компаратора.
TASKS_SAMPLE 0x008 Задача выборки состояния компаратора.
EVENTS_READY 0x100 Событие, сигнализирующее о готовности компаратора к работе, и что уровень на выходе достоверный.
EVENTS_DOWN 0x104 Событие пересечения уровней на входе в отрицательном направлении (вниз).
EVENTS_UP 0x108 Событие пересечения уровней на входе в положительном направлении (вверх).
EVENTS_CROSS 0x10C Событие пересечения уровней на входе в любом направлении.
SHORTS 0x200 Регистр шортката.
INTEN 0x300 Регистр разрешения или запрета прерываний.
INTENSET 0x304 Разрешение прерываний.
INTENCLR 0x308 Запрет прерываний.
RESULT 0x400 Результат сравнения.
ENABLE 0x500 Разрешение компаратора.
PSEL 0x504 Выбор ножки.
REFSEL 0x508 Выбор источника опорного напряжения в недифференциальном режиме.
EXTREFSEL 0x50C Выбор внешнего опорного напряжения.
TH 0x530 Конфигурация порога блока гистерезиса.
MODE 0x534 Регистр конфигурации режима.
HYST 0x538 Разрешение гистерезиса компаратора.
ISOURCE 0x53C Выбор источника тока на аналоговом входе.

Смещение адреса: 0x200. Запись 1 разрешает шорткат, запись 0 запрещает. Чтение показывает текущее состояние.

Биты регистра SHORTS:

№ бита 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0
Id                                                       E D C B A
Reset 0x00000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Назначение бит:

Id RW Поле Описание
A RW READY_SAMPLE Шорткат между событием READY и задачей SAMPLE. См. описание EVENTS_READY и TASKS_SAMPLE.
B RW READY_STOP Шорткат между событием READY и задачей STOP. См. описание EVENTS_READY и TASKS_STOP.
C RW DOWN_STOP Шорткат между событием DOWN и задачей STOP. См. описание EVENTS_DOWN и TASKS_STOP.
D RW UP_STOP Шорткат между событием UP и задачей STOP. См. описание EVENTS_UP и TASKS_STOP.
E RW CROSS_STOP Шорткат между событием CROSS и задачей STOP. См. описание EVENTS_CROSS и TASKS_STOP.

Смещение адреса: 0x300. Запись 1 разрешает соответствующее прерывание, запись 0 запрещает. Чтение показывает текущее состояние прерывания: 0 прерывание запрещено, 1 разрешено.

Биты регистра INTEN:

№ бита 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0
Id                                                         D C B A
Reset 0x00000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Назначение бит:

Id RW Поле Описание
A RW READY Разрешение/запрет прерывания для события READY. См. EVENTS_READY.
B RW DOWN Разрешение/запрет прерывания для события DOWN. См. EVENTS_DOWN.
C RW UP Разрешение/запрет прерывания для события UP. См. EVENTS_UP.
D RW CROSS Разрешение/запрет прерывания для события CROSS. См. EVENTS_CROSS.

Смещение адреса: 0x304. Запись 1 разрешает соответствующее прерывание. Запись 0 не оказывает никакого влияния. Чтение показывает текущее состояние прерывания: 0 прерывание запрещено, 1 разрешено.

Биты регистра INTENSET:

№ бита 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0
Id                                                         D C B A
Reset 0x00000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Назначение бит:

Id RW Поле Описание
A RW READY Разрешение прерывания для события READY. См. EVENTS_READY.
B RW DOWN Разрешение прерывания для события DOWN. См. EVENTS_DOWN.
C RW UP Разрешение прерывания для события UP. См. EVENTS_UP.
D RW CROSS Разрешение прерывания для события CROSS. См. EVENTS_CROSS.

Смещение адреса: 0x308. Запись 1 запрещает соответствующее прерывание. Запись 0 не оказывает никакого влияния. Чтение показывает текущее состояние прерывания: 0 прерывание запрещено, 1 разрешено.

Биты регистра INTENCLR:

№ бита 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0
Id                                                         D C B A
Reset 0x00000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Назначение бит:

Id RW Поле Описание
A RW READY Запрет прерывания для события READY. См. EVENTS_READY.
B RW DOWN Запрет прерывания для события DOWN. См. EVENTS_DOWN.
C RW UP Запрет прерывания для события UP. См. EVENTS_UP.
D RW CROSS Запрет прерывания для события CROSS. См. EVENTS_CROSS.

Смещение адреса: 0x400.

Биты регистра RESULT:

№ бита 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0
Id                                                               A
Reset 0x00000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Назначение бит:

Id RW Поле Описание
A R RESULT Результат последнего сравнения. Точка принятия решения задачи SAMPLE.
0, Below: входное напряжение ниже порога (VIN+ < VIN-).
1, Above: входное напряжение выше порога (VIN+ > VIN-).

Смещение адреса: 0x500.

Биты регистра ENABLE:

№ бита 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0
Id                                                             A A
Reset 0x00000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Назначение бит:

Id RW Поле Описание
A RW ENABLE 0: COMP запрещен.
2: COMP разрешен.

Смещение адреса: 0x504.

Биты регистра PSEL:

№ бита 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0
Id                                                           A A A
Reset 0x00000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Назначение бит:

Id RW Поле Описание
A RW PSEL Выбор ножки аналогового порта в качестве входа компаратора.
0, AnalogInput0: в качестве входа выбрана ножка AIN0.
..
7, AnalogInput7: в качестве входа выбрана ножка AIN7.

Смещение адреса: 0x508.

Биты регистра REFSEL:

№ бита 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0
Id                                                           A A A
Reset 0x00000004 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0

Назначение бит:

Id RW Поле Описание
A RW REFSEL Выбор источника опорного напряжения в режиме single-ended.
0, Int1V2: VREF = 1.2V внутреннего опорного источника (VDD должно быть ≥ 1.7V).
1, Int1V8: VREF = 1.8V внутреннего опорного источника (VDD должно быть ≥ VREF + 0.2V).
2, Int2V4: VREF = 2.4V внутреннего опорного источника (VDD должно быть ≥ VREF + 0.2V).
4, VDD: VREF = VDD.
7, ARef: VREF = AREF (VDD ≥ VREF ≥ AREFMIN).

Смещение адреса: 0x50C.

Биты регистра EXTREFSEL:

№ бита 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0
Id                                                           A A A
Reset 0x00000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Назначение бит:

Id RW Поле Описание
A RW EXTREFSEL Выбор ножки аналогового порта в качестве входа для опорного напряжения.
0, AnalogInput0: в качестве входа выбрана ножка AIN0.
..
7, AnalogInput7: в качестве входа выбрана ножка AIN7.

Смещение адреса: 0x530.

Биты регистра TH:

№ бита 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0
Id                                     B B B B B B     A A A A A A
Reset 0x00000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Назначение бит:

Id RW Поле Описание
A RW THDOWN Значение в диапазоне 0 .. 63. Порог VDOWN = (THDOWN + 1) / 64 · VREF
B RW THUP Значение в диапазоне 0 .. 63. Порог VUP = (THUP + 1) / 64 · VREF

Смещение адреса: 0x534.

Биты регистра MODE:

№ бита 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0
Id                                               B             A A
Reset 0x00000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Назначение бит:

Id RW Поле Описание
A RW SP Режим, определяющий быстродействие и энергопотребление.
0, Low: пониженное потребление энергии, низкое быстродействие.
1, Normal: нормальный режим.
2, High: повышенное потребление энергии, высокое быстродействие.
B RW MAIN Выбирает недифференциальный или дифференциальный режим.
0, SE: недифференциальный режим (single-ended mode).
1, Diff: дифференциальный режим.

Смещение адреса: 0x538.

Биты регистра HYST:

№ бита 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0
Id                                                               A
Reset 0x00000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Назначение бит:

Id RW Поле Описание
A RW HYST 0: гистерезис компаратора запрещен.
1: гистерезис компаратора разрешен.

Смещение адреса: 0x53C.

Биты регистра ISOURCE:

№ бита 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0
Id                                                             A A
Reset 0x00000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Назначение бит:

Id RW Поле Описание
A RW ISOURCE 0: источник тока запрещен.
1: разрешен источник тока (± 2.5 мкА).
2: разрешен источник тока (± 5 мкА).
3: разрешен источник тока (± 10 мкА).

[Электрические параметры компаратора]

Символ Описание min Typ MAX Ед.
ICOMP,LP Ток потребления в low-power mode   2   мкА
ICOMP,N Ток потребления normal mode   5  
ICOMP,HS Ток потребления в high-speed mode   10  
tPROPDLY,LP Задержка распространения в low-power mode(1)   0.6   мкс
tPROPDLY,N Задержка распространения в normal mode(1)   0.2  
tPROPDLY,HS Задержка распространения в lhigh-speed mode(1)   0.1  
VDIFFHYST Опциональный гистерезис, приложенный к дифференциальному входу   30   mV
VVDD-VREF Требуемая разница между VDD и выбранным VREF, VDD должно быть больше VREF 0.3     V
IINT_REF Ток, используемый внутренним опорным блоком запрещенной зоны, когда в качестве источника для VREF   13   мкА
tINT_REF,START Время запуска для внутреннего опорного блока запрещенной зоны   50 80 мкс
EINT_REF Ошибка внутреннего блока запрещенной зоны -3   3 %
RLADDER Сопротивление лестничного делителя, ILADDER = VREF / RLADDER   550   кОм
VINPUTOFFSET Смещение по входу -10   10 mV
DNLLADDER Дифференциальная нелинейность лестничного делителя   < 0.1   LSB
tCOMP,START Время запуска блока компаратора   3   мкс

Примечание (1): время распространиения с перегрузкой 10 mV.

Общий ток потребления компаратора вычисляется от токов ICOMP, IINT_REF и ILADDER для используемого опорного напряжения.

[Ссылки]

1. nRF52 COMP Comparator site:nordicsemi.com.
2. nRFxx: аббревиатуры и термины.

Компаратор, помощь по назначению, комбинационные схемы

КОМПАРАТОРЫ

  • Это комбинационная схема, которая сравнивает два числа и определяет их относительную величину
  • Выход компаратора обычно представляет собой 3 двоичные переменные, указывающие: A>B

А=В

А<В

  • Например, чтобы разработать компаратор для двухбитных двоичных чисел A (A1A0) и B (B1B0), мы выполняем следующие шаги:

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

Если мы перечислим все входные комбинации на входе, то мы получим таблицу, описывающую соответствующие выходы, которая сформулирована следующим образом.

A             B             f (A>B)  f (A=B) f (A

0

0

0

1

0

 

1

 

0

 

1

 

0

 

0

 

0

 

1

 

0

 

0

 

1

 

1

 

1

 

0

 

1

 

0

 

Далее мы находим уравнения, используя K-карты для f (A>B), f (A=B) и f (A

  • Для двухбитового компаратора у нас есть 4 входа A 1 A 0 и B 1 B 0 и 3 выхода E (равно 1, если 2 числа равны) G (равно 1, когда A > B ) и L (равно 1, когда A < B). Если мы используем таблицу истинности и KMAP, результат будет равен
  • E = A ‘ 1 A’ 0 B ‘ 1 B’ 0 + A ‘ 1 + A’ 1 A 0 B ‘1 B 0 + A 1 A 0 B 1 B 0 + A 1 A ‘0 B 1 B’ 0

или E=(( A 0 ⊕B 0 ) + ( A 1 ⊕B 1 ))’

G = А 1 Б’ 1 + А 0 Б’ 1 Б’ 0 + А 1 А 0 Б’ 0 0 1

L= A’ 1 B 1 + A’ 1 A’ 0 B 0 + A’ 0 B 1 B 3

 

Помощь с заданиями по цифровой электронике на основе электронной почты — помощь с домашними заданиями в Expertsmind

Вы ищете специалиста по проектированию электроники, чтобы получить помощь по компаратору? Тему-компаратор не проще изучить без посторонней помощи? Мы на www.Expertmind.com предлагает бесплатные конспекты лекций по цифровой электронике и помощь в назначении схем, а также помощь в выполнении домашних заданий по цифровой электронике. Репетиторы доступны круглосуточно и без выходных, чтобы помочь учащимся решить проблемы, связанные с компаратором. Мы предоставляем пошаговые ответы на вопросы Comparator со 100% свободным от плагиата содержанием. Мы готовим качественный контент и примечания для темы Comparator в разделе «Теория цифровой электроники и учебные материалы». Они доступны для подписанных пользователей, и они могут получить преимущества в любое время.

Почему Expertsmind для помощи в назначении

  1. Сеть обладателей высших степеней и опытных экспертов
  2. Пунктуальность и ответственность в работе
  3. Качественное решение со 100% ответами без плагиата
  4. Время доставки
  5. Конфиденциальность информации и сведений
  6. Превосходство в решении вопросов по цифровой электронике в формате Excel и Word.
  7. Лучшая репетиторская помощь 24×7 часов

 

Сортировка списка объектов с помощью Comparator в Java

В этом посте будет обсуждаться, как сортировать список объектов с помощью Comparator в Java.

Comparator — это функция сравнения, обеспечивающая упорядочение коллекций объектов, которые не имеют естественного порядка. Разработчику этого класса необходимо переопределить абстрактный метод compare() , определенный в java.util.Comparator , который сравнивает два своих аргумента для определения порядка. Значение, возвращаемое методом compare() , определяет позицию первого объекта относительно второго объекта.

  • Если compare() возвращает отрицательное целое число, первый аргумент меньше второго.
  • Если compare() возвращает ноль, первый аргумент равен второму.
  • Если compare() возвращает положительное целое число, первый аргумент больше второго.

 
Существует несколько способов реализации компараторов в Java:

1. Передать компаратор в качестве аргумента методу

sort() Компараторы

, если они передаются методу сортировки (например, Collections.sort Arrays.sort ), позволяют точно контролировать порядок сортировки.В следующем примере мы получаем компаратор , который сравнивает объектов Person по их возрасту.

1

2

2

3

4

5

6

7

8

70002

8

9

10

11

12

13

12

14

13

14

15

16

17

18

19

20

20

21

22

23

240002 23

25

240002 26

25

27

26

27

28

29

28

30

31

30

32

31

32

33

34

34

36

37

38

39

39

41

42

43

42

43

45

44

45

44

45

46

47

48

49

49

50

51

52

53

импорт Java.утил.*;

 

class Person

{

    private Строковое имя;

    частный возраст;

 

    public Person(String name, int age)

    {

        this.name = name;

        this.age = возраст;

}

@ Общедоступная строка

Общественная строка TOSTRING ()

{

Возвращение «{» +

«Имя = ‘» + Имя +’ \ » +

«, Возраст =» + Возраст +

                        ‘}’;

    }

 

    public String getName() {

        вернуть имя;

    }

 

    public int getAge() {

        возврат возраста;

}

}

}

}

Класс Главная

{

Общественная статическая пустота Main (String [] args)

{

Список Persone = Новый ArrayList <> (массивы.Aslist (

Новый человек («Джон», 15),

Новый Человек («Сэм», 25),

Новый Человек («Will», 20),

Новый человек («Дэн», 20),

                                         new Person(«Джо», 10)

                                        ));

 

        Коллекции.Сортировка (люди, новый компаратор () {

@ Override

публичный int Сравнить (человек P1, человек p2) {

возврат p1.getage () — p2.getage ();

}

} );

 

        System.out.println(лиц);

    }

}

Загрузите код выполнения

Вывод:

[{name=’Джо’, возраст=10}, {имя=’Джон’, возраст=15}, {имя=’Уилл’, возраст=20}, {имя=’Дэн’ , возраст = 20}, {имя = ‘Сэм’, возраст = 25}]

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

Collections.sort(persons, new Comparator() {

    @Override

    public int compare(Person p1, Person p2) {

        return p1.getAge() — p2.getAge3();

}

});

можно переписать как:

Collections.sort(лица, (p1, p2) -> p1.getAge() — p2.getAge());

 
В Java 8 представлено несколько усовершенствований интерфейса компаратора .Теперь Comparator имеет статические методы, такие как compare() , которые могут легко создавать компараторы для сравнения некоторых конкретных значений объектов. Например, чтобы получить компаратор , который сравнивает объектов Person по их возрасту, мы можем сделать:

Comparator byAge = Comparator.comparing(Person::getAge);

Коллекции.сортировать(лица,повозрасту);

 
Приведенный выше код сортирует список людей только по полю age .Если два человека имеют одинаковый возраст, их относительный порядок в отсортированном списке не является фиксированным. Таким образом, предпочтительно сравнивать объекты, используя несколько полей, чтобы избежать таких случаев.

Как сравнивать объекты с несколькими полями?

1. Мы можем легко отсортировать список людей сначала по возрасту , а затем по имени , как показано ниже. Теперь для лиц одного возраста порядок определяется именем человека.

Коллекции.sort(persons, new Comparator() {

    @Override

    public int compare(Person p1, Person p2)

    {

        if (p1.getAge() != p2.getAge0())

            return p1.getAge() – p2.getAge();

Загрузите код выполнения

 
Обратите внимание, что мы просто уменьшили значение int примитивного типа age друг от друга, в то время как для объекта String используется встроенный метод сравнения compareTo() .Как правило, эта цепочка может продолжаться и дальше, включая и другие свойства.

 
2. Мы также можем сделать это с лямбда-выражениями, используя метод .thenComparing() , который эффективно объединяет два сравнения в одно:

Comparator byAge = Comparator.comparing(Person::getAge);

Comparator byName = Comparator.comparing(Person::getName);

 

Коллекции.сортировать (лица, по возрасту. затем сравнивать (по имени));

Загрузите код выполнения

 
3. Мы также можем использовать ComparisonChain Guava для выполнения оператора сравнения в цепочке, как показано ниже:

Collections.sort (лица, новый компаратор () {

@override

Public int Сравнить (человек P1, лицо P2)

{

возврата Compartishicain.Start ()

.compare(p1.getAge(), p2.getAge())

                       .compare(p1.getName(), p2.getName())

                        .result();

    }

});

Код загрузки

 
Возвращаемое значение метода compare() будет иметь тот же знак, что и первый ненулевой результат сравнения в цепочке, или будет равно нулю, если все результаты сравнения были равны нулю. Обратите внимание, что ComparisonChain прекращает вызывать свои входные параметры compareTo и compare , как только один из них возвращает ненулевой результат.

 
4. Мы также можем использовать класс CompareToBuilder библиотеки Apache Commons Lang, чтобы помочь в реализации метода Comparator.compare() . Чтобы использовать этот класс, напишите следующий код:

Collections.sort (лица, новый компаратор () {

@ Overridide

Public int Сравнить (лицо P1, лицо P2)

{

Возврат нового сравнения ()

.append(p1.getAge(), p2.getAge())

                       .append(p1.getName(), p2.getName())

                        .toComparison();

    }

});

Код загрузки

 
Значения сравниваются в том порядке, в котором они добавляются к построителю. Если какое-либо сравнение возвращает ненулевой результат, то это значение будет возвращено функцией toComparison() , и все последующие сравнения будут пропущены.

2.Реализовать компаратор в отдельном классе

Мы даже можем реализовать Компаратор в отдельном классе, а затем передать экземпляр этого класса методу sort() . Это показано ниже:

1

2

2

3

4

5

6

7

8

70002

8

9

10

11

12

13

12

14

13

14

15

16

17

18

19

20

20

21

22

23

240002 23

25

240002 26

25

27

26

27

28

29

28

30

31

30

32

31

32

33

34

34

36

37

38

39

39

41

42

43

42

43

45

44

45

44

45

46

47

48

49

49

50

51

52

53

54

55

56

57

58

5

0 3

импорт Java.утил.*;

 

class Person

{

    private Строковое имя;

    частный возраст;

 

    public Person(String name, int age)

    {

        this.name = name;

        this.age = возраст;

}

@ Общедоступная строка

Общественная строка TOSTRING ()

{

Возвращение «{» +

«Имя = ‘» + Имя +’ \ » +

«, Возраст =» + Возраст +

                        ‘}’;

    }

 

    public String getName() {

        вернуть имя;

    }

 

    public int getAge() {

        возврат возраста;

}

}

}

Класс MyComparator реализуется компаратор

{

@

{

@ Overrride

Public int Сравнить (человек P1, лицо P2)

{

, если (P1.getAge() != p2.getAge()) {

            return p1.getAge() — p2.getAge();

        }

        return p1.getName().compareTo(p2.getName());

}

}

}

Class Main

{

Общественный статический void Main (String [] Args)

{

Список Chen = New ArrayList <> (Artrays.aslist (

новый Человек («Джон», 15),

Новый Человек («Сэм», 25),

Новый Человек («Will», 20),

Новый человек («Дан», 20),

Новый человек ( «Джо», 10)

                                       ));

 

        Коллекции.sort(лица, новый MyComparator());

        System.out.println(лиц);

    }

}

Загрузите код выполнения

Вывод:

[{name=’Джо’, возраст=10}, {имя=’Джон’, возраст=15}, {имя=’Дэн’, возраст=20}, {имя=’Уилл’ , возраст = 20}, {имя = ‘Сэм’, возраст = 25}]

3. Передать компаратор в метод

List.sort()

Java 8 представила несколько улучшений интерфейса List .Теперь Список имеет собственный метод сортировки sort(), который сортирует список в соответствии с порядком, заданным указанным компаратором . Это показано ниже:

1

2

2

3

4

5

6

7

8

70002

8

9

10

11

12

13

12

14

13

14

15

16

17

18

19

20

20

21

22

23

240002 23

25

240002 26

25

27

26

27

28

29

28

30

31

30

32

31

32

33

34

34

36

37

38

38

39

41

41

43

42

43

44

45

46

45

46

47

48

49

импорт Java.утил.*;

 

class Person

{

    private Строковое имя;

    частный возраст;

 

    public Person(String name, int age)

    {

        this.name = name;

        this.age = возраст;

}

@ Общедоступная строка

Общественная строка TOSTRING ()

{

Возвращение «{» +

«Имя = ‘» + Имя +’ \ » +

«, Возраст =» + Возраст +

                        ‘}’;

    }

 

    public String getName() {

        вернуть имя;

    }

 

    public int getAge() {

        возврат возраста;

}

}

}

}

Класс Главная

{

Общественная статическая пустота Main (String [] args)

{

Список Persone = Новый ArrayList <> (массивы.Aslist (

Новый человек («Джон», 15),

Новый Человек («Сэм», 25),

Новый Человек («Will», 20),

Новый человек («Дэн», 20),

                                         new Person(«Джо», 10)

                                        ));

 

        лиц.sort(Comparator.comparing(Person::getAge)

                               .thenComparing(Comparator.comparing(Person::getName)));

 

        System.out.println(лиц);

    }

}

Загрузите код выполнения

Вывод:

[{name=’Джо’, возраст=10}, {имя=’Джон’, возраст=15}, {имя=’Дэн’, возраст=20}, {имя=’Уилл’ , возраст = 20}, {имя = ‘Сэм’, возраст = 25}]

4. Передать компаратор в поток

.отсортировано () метод

Мы также можем передать наш компаратор методу sorted() класса Stream , который возвращает поток, состоящий из элементов этого потока, отсортированных в соответствии с предоставленным Comparator . Вот рабочий пример:

1

2

2

3

4

5

6

7

8

70002

8

9

10

11

12

13

12

14

13

14

15

16

17

18

19

20

20

21

22

23

240002 23

25

240002 26

25

27

26

27

28

29

28

30

31

30

32

31

32

33

34

34

36

37

38

39

39

41

42

43

42

43

45

44

45

44

45

46

47

48

49

49

50

51

52

53

54

55

импорт Java.использовать.ArrayList;

импорт java.util.Arrays;

импорт java.util.Comparator;

импорт java.util.List;

импорт java.util.stream.Collectors;

 

class Person

{

    private Строковое имя;

    частный возраст;

 

    public Person(String name, int age)

    {

        this.name = name;

        this.age = возраст;

}

@ Общедоступная строка

Общественная строка TOSTRING ()

{

Возвращение «{» +

«Имя = ‘» + Имя +’ \ » +

«, Возраст =» + Возраст +

                        ‘}’;

    }

 

    public String getName() {

        вернуть имя;

    }

 

    public int getAge() {

        возврат возраста;

}

}

}

}

Класс Главная

{

Общественная статическая пустота Main (String [] args)

{

Список Persone = Новый ArrayList <> (массивы.Aslist (

Новый человек («Джон», 15),

Новый Человек («Сэм», 25),

Новый Человек («Will», 20),

Новый человек («Дэн», 20),

                                         new Person(«Джо», 10)

                                        ));

 

        лица = лица.Поток ()

. SORTED (CHANALATRATION VCOMPHHARING (Person :: Getage)

.thencaring (Comparator.com (персонал :: getname)))

.Collect (Collectors.tolist ());

 

        System.out.println(лиц);

    }

}

Загрузите код выполнения

Вывод:

[{name=’Джо’, возраст=10}, {имя=’Джон’, возраст=15}, {имя=’Дэн’, возраст=20}, {имя=’Уилл’ , возраст = 20}, {имя = ‘Сэм’, возраст = 25}]

Это все, что касается сортировки списка объектов с помощью Comparator в Java.

 
Продолжить чтение:

Сортировка списка объектов с помощью Comparable в Java


Спасибо за прочтение.

Пожалуйста, используйте наш онлайн-компилятор для публикации кода в комментариях с использованием C, C++, Java, Python, JavaScript, C#, PHP и многих других популярных языков программирования.

Нравится нам? Порекомендуйте нас своим друзьям и помогите нам расти. Удачного кодирования 🙂


Домашнее задание 10: Компараторы и наборы

Домашнее задание 10: Компараторы и наборы | COMPSCI 186 — осень 2019 г.

В классе у нас был PostalAddress , реализующий интерфейс Comparable , и мы написали метод compareTo , чтобы придать ему естественный порядок.Иногда мы хотим определить дополнительные порядки для класса, и поэтому мы определяем новый класс Comparator для каждого такого упорядочения. (См. примечания для примеров использования «почтовой сортировки»).

(2 балла) Определите StringACountComparator для String таким образом, чтобы вызов sort для List строк сортировал их по количеству вхождений символов нижнего регистра a в возрастающем порядке ( от меньшего к большему).Показать полное определение класса.

Например, в списке ввода ["Анжела", "трубкозуб", "птица"] список, отсортированный в соответствии с этим компаратором, будет ["птица", "Анжела", "трубкозуб"]

Подсказки:

  • Начните с объявления класса; StringACountComparator должен реализовать Comparator с соответствующим параметром типа ( ) — так же, как PostalAddressComparator реализовал Comparator с типом PostalAddress .
  • Вам нужно реализовать только один метод. Чем проще и понятнее, тем лучше.
  • Используйте метод String для извлечения символов. Затем подсчитайте количество вхождений и .
  • Вы можете правильно сравнить подсчеты, используя < , > и/или == , или вы можете использовать Integer.compare (примеры каждого из них есть в конспектах лекций)
  • Пишите этот курс в Eclipse, а не в MS Word или Google Docs, иначе вам будет плохо.

Предположим, у нас есть наборы целых чисел S и T и соответствующие объекты Java типа Set с именами s и t . Для каждого из следующих выражений равны ли значения? Вероятно, вы захотите прочитать описание каждого метода в Java API. Объясните свой ответ одним предложением. Главное, что следует учитывать, — определяет ли выражение значение (будь то логическое значение или новый набор) или изменяет значение. (по 1 баллу)

А.6 ∈ T и t.содержит(6)

B. T ⊆ S и s.containsAll(t)

C. S ∩ T и содержимое s после вызова s.retainAll(t)

Д. Т\С и содержимое т после звонка т.removeAll(s)


Copyright © 2019 Марк Либераторе | Powered by Hugo – тема с Hugo Classic

Операторы сравнения - cppreference.com

Сравнивает аргументы.

Имя оператора Синтаксис Возможность перегрузки Примеры прототипов (для класса T)
В качестве функции-члена Как свободная (пространство имен) функция
равно а == б Да bool T::operator ==(const T2 &b) const; логический оператор ==(const T &a, const T2 &b);
не равно а != б Да bool T::operator !=(const T2 &b) const; логический оператор !=(const T &a, const T2 &b);
менее а < б Да bool T::operator <(const T2 &b) const; логический оператор <(const T &a, const T2 &b);
больше чем а > б Да bool T::operator >(const T2 &b) const; логический оператор >(const T &a, const T2 &b);
меньше или равно а <= б Да bool T::operator <=(const T2 &b) const; логический оператор <=(const T &a, const T2 &b);
больше или равно а >= б Да bool T::operator >=(const T2 &b) const; логический оператор >=(const T &a, const T2 &b);
трехстороннее сравнение (C++20) а <=> б Да /*см. ниже*/ T::operator <=>(const T2 &b) const; /*см. ниже*/ оператор <=>(const T &a, const T2 &b);
Примечания
  • Если встроенные операторы возвращают логическое значение, большинство пользовательских перегрузок также возвращают логическое значение, поэтому пользовательские операторы можно использовать так же, как и встроенные.Однако в пользовательской перегрузке оператора любой тип может использоваться в качестве типа возвращаемого значения (включая void).
  • T2 может быть любого типа, включая T .

[править] Двустороннее сравнение

Выражения оператора двустороннего сравнения имеют вид

левый < правый (1)
левый > правый (2)
левый <= правый (3)
левый >= правый (4)
левый == правый (5)
левый != правый (6)

1) Возвращает true , если левая меньше правой, false в противном случае.

2) Возвращает true , если левая больше правой, false в противном случае.

3) Возвращает true , если левая меньше или равна правой, false в противном случае.

4) Возвращает true , если левая больше или равна правой, false в противном случае.

5) Возвращает true , если левая равна правой, false в противном случае.

6) Возвращает true , если левая не равна правой, false в противном случае.

Во всех случаях для встроенных операторов lhs и rhs должны иметь либо

  • арифметический или перечисляемый тип (см. арифметические операторы сравнения ниже)
  • тип указателя (см. операторы сравнения указателей ниже)

после применения стандартных преобразований lvalue-to-rvalue, массива в указатель и функции в указатель. Сравнение устарело, если оба операнда имеют тип массива до применения этих преобразований. (начиная с С++ 20)

В любом случае результатом будет значение bool prvalue.

[править] Арифметические операторы сравнения

Если операнды имеют арифметический тип или тип перечисления (с областью действия или без нее), обычные арифметические преобразования выполняются над обоими операндами по правилам для арифметических операторов. Значения сравниваются после преобразований:

[править] Пример
 #include 
основной ()
{
    std::cout << std::boolalpha;
    интервал п = -1;

    инт п2 = 1;
    std::cout << " -1 == 1?" << (n == n2) << '\n'
              << "Сравнение двух значений со знаком:\n"
              << " -1 < 1?" << (n < n2) << '\n'
              << " -1 > 1?" << (n > n2) << '\n';

    беззнаковое целое и = 1;
    std::cout << "Сравнение подписанного и неподписанного:\n"
              << " -1 < 1?" << (n < u) << '\n'
              << " -1 > 1?" << (n > u) << '\n';

    static_assert (sizeof (без знака char) < sizeof (int),
                  "Невозможно правильно сравнить знаковые и меньшие беззнаковые");
    беззнаковый символ uc = 1;
    std::cout << "Сравнение знакового и меньшего беззнакового:\n"
              << " -1 < 1?" << (n < uc) << '\n'
              << " -1 > 1?" << (n > uc) << '\n';
} 

Выход:

 -1 == 1? ложный
Сравнение двух значений со знаком:
 -1 < 1? истинный
 -1 > 1? ложный
Сравнение подписанного и неподписанного:
 -1 < 1? ложный
 -1 > 1? истинный
Сравнение подписанных и меньших беззнаковых:
 -1 < 1? истинный
 -1 > 1? ложь 
[править] Операторы сравнения указателей

Операторы сравнения могут использоваться для сравнения двух указателей.

Только операторы равенства (operator== и operator!=) можно использовать для сравнения следующих пар указателей:

  • два указателя на члены
  • константа нулевого указателя с указателем или указателем на элемент

Во-первых, преобразования указателя (преобразования указателя в элемент, если аргументы являются указателями на элементы), преобразования указателя функции (начиная с C++17) и преобразования квалификации применяются к обоим операндам для получения типа составного указателя , как следует

1) Если оба операнда являются константами нулевого указателя, тип составного указателя — std::nullptr_t. (начиная с C++11)

2) Если один операнд является константой нулевого указателя, а другой является указателем, составной тип является точно типом указателя

3) Если операнды
  • указатель на cv1 void и
  • указатель на cv2 T , где T — тип объекта или пустота,
составной тип — «указатель на cv12 void», где cv12 — это объединение cv1 и cv2 . 4) Если типы операндов
  • P1 , указатель на (возможно, cv-квалифицированный) T1 , и
  • P2 , указатель на (возможно, cv-квалифицированный) T2 ,
и если T1 совпадает с T2 или является базовым классом T2 , то тип составного указателя представляет собой cv-комбинированный тип P1 и P2 .В противном случае, если T2 является базовым классом T1 , то тип составного указателя представляет собой тип cv-combined P2 и P1 . 5) Если типы операндов
  • MP1 , указатель на элемент T1 типа (возможно, cv-квалифицированный) U1 , и
  • MP2 , указатель на элемент T2 типа (возможно, cv-квалифицированный) U2 ,
и если T1 совпадает с T2 или получен из него, то тип составного указателя представляет собой cv-комбинированный тип MP1 и MP2 .В противном случае, если T2 является производным от T1 , то составной тип указателя является типом cv-combined MP2 и MP1 .

6) Если типы операндов P1 и P2 являются многоуровневыми смешанными указателями и указателями на типы-члены с одинаковым количеством уровней, которые отличаются только cv-квалификациями на любом из уровней, тип составного указателя является комбинированным типом P1 и P2 .

В приведенном выше определении тип cv-combined двух типов указателей P1 и P2 является типом P3 , который имеет то же количество уровней и тип на каждом уровне, что и P1 , за исключением того, что cv- квалификации на каждом уровне устанавливаются следующим образом:

а) на каждом уровне, кроме высшего, объединение cv-квалификаций P1 и P2 на этом уровне

b) если результирующая cv-квалификация на любом уровне отличается от cv-квалификации P1 или P2 на том же уровне, то const добавляется к каждому уровню между верхним уровнем и этим.

Например, типом составного указателя void* и const int* является const void*. Тип составного указателя int** и const int** — const int* const*. Обратите внимание, что до решения CWG1512 нельзя было сравнивать int** и const int**.

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

(начиная с C++17)

Обратите внимание, что это означает, что любой указатель можно сравнить с void*.

Результат сравнения двух указателей на объекты (после преобразований) определяется следующим образом:

1) Если два указателя указывают на разные элементы одного и того же массива или на подобъекты в разных элементах одного и того же массива, указатель на элемент с более высоким индексом сравнивается с большим . Другими словами, результаты сравнения указателей совпадают с результатами сравнения индексов элементов, на которые они указывают.

2) Если один указатель указывает на элемент массива или на подобъект элемента массива, а другой указатель указывает на один после последнего элемента массива, последний указатель сравнивает большее .Указатели на объекты, не являющиеся массивами, обрабатываются как указатели на массивы из единицы: &obj+1 сравнивает больше, чем &obj.

3) Если в объекте типа класса, не являющегося объединением, два указателя указывают на разные ненулевые (начиная с C++20) нестатические элементы данных с одним и тем же доступом к членам (до C++23) или к подобъектам или элементам массива таких элементов, рекурсивно, указатель на более поздний объявленный элемент сравнивается с большим . Другими словами, члены класса в каждом из трех режимов доступа к членам располагаются в памяти в порядке объявления.

Результат сравнения двух указателей на равенство (после преобразований) определяется следующим образом:

1) Если оба указателя являются нулевыми значениями указателя, они сравниваются равными

2) Если указатели являются указателями на функцию и указывают на одну и ту же функцию, то сравнить равно

3) Если указатели являются указателями на объект и представляют один и тот же адрес, они сравниваются равными (включая два указателя на нестатические элементы одного и того же объединения, указатели на структуру стандартной компоновки и ее первый элемент, указатели, связанные реинтерпретировать_каст и т. д.)

4) Все остальные указатели сравниваются неравно

Результат сравнения двух указателей на элементы (после преобразования) определяется следующим образом:

1) Если оба указателя на элемент являются нулевыми значениями указателя на элемент, они сравниваются равными .

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

3) В противном случае, если любой из них является указателем на виртуальную функцию-член, результат не указан.

4) В противном случае два указателя на член сравниваются равными тогда и только тогда, когда они будут ссылаться на один и тот же член одного и того же наиболее производного объекта или на один и тот же подобъект, если они были разыменованы с гипотетическим объектом ассоциированного типа класса.

5) В противном случае они сравниваются неравными.

Если указатель p сравнивается равным с указателем q , p<=q и p>=q оба дают true, а pq оба дают false.

Если указатель p сравнивает большее , чем указатель q , тогда p>=q, p>q, q<=p и q

=p и q>p дают false.

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

 интервал х, у;

bool f(int* p, int* q) { return p < q; }

assert(f(&x, &y) == f(&x, &y)); // может срабатывать в соответствующей реализации 

При разрешении перегрузки для определяемых пользователем операторов для каждой пары продвинутых арифметических типов L и R , включая типы перечисления, в разрешении перегрузки участвуют следующие сигнатуры функций:

логический оператор<(L, R);

bool оператор>(L, R);

логический оператор<=(L, R);

логический оператор >=(L, R);

логический оператор == (L, R);

bool оператор!=(L, R);

Для каждого типа P , который является либо указателем на объект, либо указателем на функцию, в разрешении перегрузки участвуют следующие сигнатуры функций:

логический оператор<(P, P);

bool оператор>(P, P);

логический оператор<=(P, P);

логический оператор >=(P, P);

логический оператор == (P, P);

bool оператор!=(P, P);

Для каждого типа MP , который является указателем на объект-член или указатель на функцию-член или std::nullptr_t, следующие сигнатуры функций участвуют в разрешении перегрузки:

bool operator==(MP, MP);

bool оператор!=(MP, MP);

[править] Пример
 #include 
структура Foo { int n1; интервал n2; };
союз союз { int n; двойной д; };
основной ()
{
    std::cout << std::boolalpha;

    символ a[4] = "abc";

    char* p1 = &a[1];
    char* p2 = &a[2];
    std::cout << "Указатели на элементы массива:\n"
              << "p1 == p2?" << (p1 == p2) << '\n'
              << "p1 < p2?" << (p1 < p2) << '\n';
    Фу ф;
    int* p3 = &f.п1;
    int* p4 = &f.n2;
    std::cout << "Указатели на члены класса:\n"
              << "p3 == p4?" << (p3 == p4) << '\n'
              << "p3 < p4?" << (p3 < p4) << '\n';
    Союз у;
    int* p5 = &u.n;
    двойной* p6 = &u.d;
    std::cout << "Указатели на членов объединения:\n"
              << "p5 == (void*)p6?" << (p5 == (void*)p6) << '\n'
              << "p5 < (void*)p6?" << (p5 < (void*)p6) << '\n';
} 

Выход:

 Указатели на элементы массива:
р1 == р2? ложный
р1 < р2? истинный
Указатели на членов класса:
р3 == р4? ложный
р3 < р4? истинный
Указания для членов профсоюза:
p5 == (void*)p6? истинный
p5 < (пусто*)p6? ложь 
[править] Примечания

Поскольку эти операторы группируются слева направо, анализируется выражение a

 #include 
интервал основной () {
    инт а = 3, б = 2, с = 1;
    std::cout << std::boolalpha
        << ( a < b < c ) << '\n' // true; может предупреждение
        << ( ( a < b ) < c ) << '\n' // верно
        << ( a < ( b < c )) << '\n' // ложь
        << ( ( a < b ) && ( b < c )) << '\n'; // ложный
} 

Общим требованием для пользовательского operator< является строгое слабое упорядочение. В частности, этого требуют стандартные алгоритмы и контейнеры, работающие с типами Compare: std::sort, std::max_element, std::map и т.д.

Хотя результаты сравнения указателей случайного происхождения (например, не все указатели указывают на элементы одного и того же массива) не определены, многие реализации обеспечивают строгий общий порядок указателей, например. если они реализованы как адреса в непрерывном виртуальном адресном пространстве. Те реализации, которые этого не делают (например, когда не все биты указателя являются частью адреса памяти и должны быть проигнорированы для сравнения, или требуется дополнительное вычисление, или в противном случае указатель и целое число не являются отношением 1 к 1), обеспечивают специализация std::less для указателей с такой гарантией.Это позволяет использовать все указатели произвольного происхождения в качестве ключей в стандартных ассоциативных контейнерах, таких как std::set или std::map.

Для типов, которые являются EqualityComparable и LessThanComparable, стандартная библиотека C++ различает равенство , которое является значением выражения a == b, и эквивалентность , которое является значением выражения !(a < б) && !(б < а).

Сравнение между указателями и константами пустых указателей было удалено решением проблемы 583 CWG, включенной в N3624.

 пустота f(char * p)
{
  если (р > 0) { /*...*/ } // Ошибка с N3624, скомпилирована до N3624
  if (p > nullptr) { /*...*/ } // Ошибка с N3624, скомпилировано до N3624
}
интервал main(){ } 

Трехстороннее сравнение

Выражения оператора трехстороннего сравнения имеют вид

Выражение возвращает такой объект, что

  • (a <=> b) < 0, если левая < правая
  • (a <=> b) > 0, если левая > правая
  • (a <=> b) == 0, если левая и правая стороны равны/эквивалентны.

Если один из операндов имеет тип bool, а другой нет, то программа некорректна.

Если оба операнда имеют арифметические типы или если один операнд имеет тип перечисления с незаданной областью, а другой имеет целочисленный тип, к операндам применяются обычные арифметические преобразования, а затем

  • Если требуется сужающее преобразование, отличное от целочисленного типа, к типу с плавающей запятой, программа имеет неправильный формат.
  • В противном случае, если операнды имеют целочисленный тип, оператор возвращает значение prvalue типа std::strong_ordering:
  • std::strong_ordering::equal, если оба операнда арифметически равны,
  • std::strong_ordering::less, если первый операнд арифметически меньше второго
  • std::strong_ordering::больше иначе.
  • В противном случае операнды имеют тип с плавающей запятой, и оператор возвращает значение типа std::partial_ordering. Выражение a <=> b дает
  • std::partial_ordering::less, если a меньше b
  • std::partial_ordering::больше, если a больше, чем b
  • std::partial_ordering::equivalent если a эквивалентно b (-0 <=> +0 эквивалентно)
  • std::partial_ordering::unordered (NaN <=> все неупорядочено).

Если оба операнда имеют один и тот же тип перечисления E , оператор возвращает результат преобразования операндов в базовый тип E и применения <=> к преобразованным операндам.

Если хотя бы один из операндов является указателем или указателем на элемент, преобразования массива в указатель, преобразования производного указателя в базовый, преобразования указателя функции и преобразования квалификации применяются по мере необходимости для преобразования обоих операндов в того же типа указателя, и результирующий тип указателя является типом указателя объекта, p <=> q ​​возвращает значение prvalue типа std::strong_ordering:

  • std::strong_ordering::equal, если p == q,
  • std::strong_ordering::less, если p < q,
  • std::strong_ordering::больше, если p > q.
  • неуказанный результат, если сравнение не указано для этих значений указателя (например, когда они не указывают на один и тот же объект или массив).

В противном случае программа неправильно сформирована.

При разрешении перегрузки для определяемых пользователем операторов для указателя или типа перечисления T в разрешении перегрузки участвует следующая сигнатура функции:

Где R — тип категории заказа, определенный выше.

Пример
 #include <сравнить>
#include <иопоток>

основной ()
{
    двойной фу = -0.0;
    двойная полоса = 0,0;

    auto res = foo <=> бар;

    если (рез < 0)
        std::cout << "-0 меньше 0";
    иначе если (рез > 0)
        std::cout << "-0 больше 0";
    иначе // (рез == 0)
        std::cout << "-0 и 0 равны";
} 

Выход:

Примечания

Трехстороннее сравнение может быть создано автоматически для типов классов, см. сравнения по умолчанию.

Если оба операнда являются массивами, трехстороннее сравнение некорректно.

 целое число без знака i = 1;
авто г = -1 < я; // существующая ловушка: возвращает false
авто r2 = -1 <=> я; // Ошибка: требуется сужающее преобразование 

Макрос тестирования функций: __cpp_lib_three_way_comparison

(начиная с C++20)

[править] Стандартная библиотека

Операторы сравнения перегружены для многих классов стандартной библиотеки.

Пространство имен std::rel_ops предоставляет общие операторы !=, >, <= и >=

[править] Отчеты о дефектах

Следующие отчеты о дефектах, изменяющих поведение, были применены задним числом к ​​ранее опубликованным стандартам C++.

ДР Применяется к Поведение после публикации Правильное поведение
CWG 583 С++ 98
С++ 11
все шесть операторов сравнения могут использоваться для сравнения указателя
с nullptr (C++11) или другой константой нулевого указателя (C++98)
разрешены только операторы равенства
CWG 1512 С++ 98 правило составного типа указателя было неполным, поэтому
не допускало сравнения между int** и const int**
завершено
CWG 1596 С++ 98 объекта, не являющегося массивом, считались принадлежащими массивам с
одним элементом только для целей арифметики указателей. б
а << б
а >> б


а && б
а || б

a == b
a != b
a < b
a > b
a <= b
a >= b
a <=> b

a[b]
*a
&a
a->b
a.б
а->*б
а.*б

а(...)
а, б
а ? до н.э

Специальные операторы

static_cast преобразует один тип в другой связанный тип
dynamic_cast преобразует в пределах иерархии наследования
const_cast добавляет или удаляет квалификаторы cv
reinterpret_cast преобразует тип в несвязанный тип , и reinterpret_cast
new создает объекты с динамической продолжительностью хранения
delete уничтожает объекты, ранее созданные новым выражением, и освобождает полученную область памяти
sizeof запросов размером типа
sizeof... запрашивает размер пакета параметров (начиная с C++11)
typeid запрашивает информацию о типе типа
noexcept проверяет, может ли выражение вызвать исключение (начиная с C++11)
alignof запрашивает требования выравнивания типа (начиная с С++ 11)

4-битный компаратор величин

Это назначение «4-битного компаратора величины». Цифровой дизайн - Компьютерная инженерия Университет Сомайя - Гьяни Бадди

Сравнение двух чисел — это оператор, который определяет, что одно число больше, меньше (или) равно другому числу.Компаратор величин представляет собой комбинационную схему, которая сравнивает два числа A и B и определяет их относительную величину. Результат компаратора определяется тремя двоичными переменными, которые указывают, является ли A>B, A=B (или) A


Двухбитный компаратор величин Детали реализации:

Таблица истинности 

 

А1

А0

В1

В0

А > В

А = В

А < В

             

0

0

0

0

0

1

0

             

0

0

1

0

0

1

             

0

0

1

0

0

0

1

             

0

0

1

    1

0

0

1

             

0

1

0

0

1

0

0

             

0

1

0

1

0

1

0

             

0

1

1

0

0

0

1

             

0

1

1

1

0

0

1

             

1

0

0

0

1

0

0

 

0

         

1

0

0

1

1

0

0

1

           

1

0

1

0

0

1

0

             

1

0

1

1

0

0

1

 

11

         

1

1

0

0

1

0

0

1

           

1

1

0

1

1

0

0

             

1

1

1

0

1

0

0

             

1

1

1

1

0

1

0

             

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Из таблицы правды:

 

  (A

  (A=B) = A1’A0’B1’B0 ’+ A1’A0 B1’B0 +A1A0B1B0 + A1A0’B1B0’

=A1’B1’ (A0’B0’ +A0B0) + A1B1 (A0B0+A0’B0’)

= (A0B0+A0’B0’) (A1B1+A1’B1’)

= (A0 EX-NOR B0) (A1 EX-NOR B1)

  (A>B) = A1B1’ + A0B1’B0 ’+A1A0B0’

 

Логическая схема 2-битного компаратора

Детали реализации четырехбитного компаратора величин

  Схема выводов микросхемы 7485

 


Логическая схема ИС 7485

Таблица сравнения

 

Это назначение «4-битного компаратора величины». Цифровой дизайн - Компьютерная инженерия Университет Сомайя - Гьяни Бадди

1.Разработайте 1-битный компаратор с использованием логических вентилей.

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

  Таблица истинности:

А>В = АВ’

А<В = А’В

А=В = А'В' +АВ

ИТОГО:

(А>В) + (А<В) = А’В + АВ’

ПРИНИМАЙТЕ ДОПОЛНЕНИЕ С ОБЕИХ СТОРОН

  ((А>В) + (А<В))’ = (А’В + АВ’)’

  ((А>В) + (А<В))’ = АВ’ + А’В

  ((А>В) + (А<В))’ = (А+ В’) (А’ + В)

  ((A>B) + (A

  ((А>В) + (А<В))’= (АВ +АВ’)


 

Операции сравнения, присвоения, арифметики и конкатенации

Тип данных, длина и величина значения определяют, как

IDMS

обрабатывает значение во время операций сравнения, присвоения, арифметики и конкатенации.Те же самые факторы также влияют на результат этих операций, а именно:
  • Заполнение может произойти во время сравнения значений неравной длины.

  • Переполнение происходит, когда величина числового значения больше наибольшей величины, представленной типом данных конструкции, которой присвоено значение.

  • Потеря значимости происходит, когда величина приблизительного числового значения меньше наименьшей величины, представленной типом данных конструкции, которой присвоено значение.

  • Усечение может произойти, когда двоичное, графическое или символьное значение присваивается конструкции, которая недостаточно велика для хранения значения.

  • Округление может происходить в результате усечения при присваивании и арифметических операциях.

Типы данных, рассматриваемые в этом разделе:

Двоичные значения можно сравнить со следующими:

  • Другие двоичные значения. При сравнении двоичных значений разной длины

    IDMS

    дополняет более короткое значение двоичными нулями справа, чтобы сделать длины равными.
  • Значения даты/времени. При условии, что двоичное значение имеет длину 8.

  • Символьные значения. Если двоичные и символьные значения имеют разную длину,

    IDMS

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

Двоичные значения могут быть присвоены следующим:

  • Двоичные конструкции (например, столбец с типом данных BINARY):
    • Если двоичное значение короче конструкции,

      IDMS

      дополняет значение двоичные нули справа, чтобы значение соответствовало длине конструкции.
    • Если двоичное значение длиннее конструкции, а конструкция представляет собой столбец (например, в операции INSERT или UPDATE),

      IDMS

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

      IDMS

      генерирует исключительную ситуацию, и присвоение не происходит.
    • Если двоичное значение длиннее конструкции, а конструкция является переменной хоста (например, в операции FETCH или SELECT),

      IDMS

      усекает значение справа.
  • Конструкции даты/времени (например, столбец с типом данных TIMESTAMP), при условии, что двоичное значение имеет длину 8 и соответствует внутреннему представлению допустимого значения даты/времени.

  • Символьные конструкции (например, столбец с типом данных CHARACTER). Правила присвоения двоичного значения конструкции символа такие же, как и правила присвоения значения символа конструкции символа. Если необходимо заполнение, оно выполняется пробелами вместо двоичных нулей.

Вы не можете использовать двоичные значения в арифметических операциях.

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

Значения символов можно сравнить со следующими:

  • Другие значения символов. При сравнении значений символов разной длины

    IDMS

    дополняет более короткое значение пробелами справа, чтобы сделать длины равными.
  • Значения даты/времени при условии, что символьное значение имеет формат значения даты/времени того же типа данных, что и значение даты/времени, используемое при сравнении.

  • Двоичные значения. Двоичное значение обрабатывается как символьное значение и при необходимости дополняется пробелами перед выполнением сравнения.

Символьные значения могут быть присвоены следующим элементам:

  • Символьные конструкции (например, столбец с типом данных CHARACTER или VARCHAR).Если значение символа:
    • Короче, чем конструкция, и конструкция имеет тип данных CHARACTER,

      IDMS

      дополняет значение пробелами справа, чтобы значение соответствовало длине конструкции. Если конструкция имеет тип данных VARCHAR, заполнение не выполняется.
    • Если конструкция длиннее, а конструкция является столбцом (например, в операции INSERT или UPDATE),

      IDMS

      усекает значение справа, если все символы, подлежащие усечению, являются пробелами.Если непустые символы будут усечены,

      IDMS

      генерирует исключение, и присвоение не происходит.
    • Длиннее, чем конструкция, и конструкция является переменной хоста, локальной переменной или параметром (например, в операции FETCH, SELECT или SET),

      IDMS

      усекает значение справа и предупреждение SQL выдается условие.
  • Конструкции даты/времени (например, столбец с типом данных TIMESTAMP), при условии, что символьное значение имеет формат значения даты/времени того же типа данных, что и конструкция, к которой относится значение назначенный.

  • Двоичные конструкции (например, столбец с типом данных BINARY). Правила присвоения символьного значения двоичной конструкции идентичны правилам присвоения двоичного значения двоичной конструкции. Если необходимо заполнение, оно выполняется двоичными нулями вместо пробелов.

Вы не можете использовать значения символов в арифметических операциях.

Символьные значения могут быть объединены с другими символьными значениями.

Если одно значение в конкатенации:

  • Имеет тип данных VARCHAR, результат имеет тип данных VARCHAR.В противном случае результат имеет тип данных CHARACTER.

  • Является нулевым, результат нулевой. В противном случае длина результата равна сумме длин двух объединенных значений. Длина результата не может превышать 32 760.

Символьное значение и двоичное значение могут быть объединены. Двоичное значение обрабатывается как символьное значение для конкатенации.

Значения даты/времени можно сравнить с:

  • Другие значения даты/времени того же типа данных

  • Двоичные значения, при условии, что двоичное значение имеет длину 8 символьное значение имеет формат значения даты/времени того же типа данных, что и значение даты/времени, используемое при сравнении

Значения даты/времени могут быть присвоены следующим: один и тот же тип данных.Например, значение с типом данных TIMESTAMP может быть присвоено столбцу с типом данных TIMESTAMP.

  • Двоичные конструкции длиной 8.

  • Символьные конструкции, достаточно длинные, чтобы содержать значение даты/времени. право сделать значение такой же длинной, как конструкция
  • Длиннее символьной конструкции,

    IDMS

    генерирует исключение и не выполняет присваивание
  • Вы можете использовать значения даты/времени только в сложении и вычитании.Специальные правила управляют арифметикой даты/времени.

    Вы можете объединить значение даты и значение времени, используя функцию TIMESTAMP.

    Значения графических символов

    Значения графических символов можно сравнивать с другими значениями графических символов. При сравнении значений графических символов разной длины

    IDMS

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

    Значения графических символов могут быть присвоены конструкциям графических символов (например, столбцу с типом данных GRAPHIC или VARGRAPHIC): Если значение графического символа:

    • Короче, чем конструкция, и конструкция имеет тип данных of GRAPHIC,

      IDMS

      дополняет значение двухбайтовыми пробелами справа, чтобы значение соответствовало длине конструкции.Если конструкция имеет тип данных VARGRAPHIC, заполнение не выполняется.
    • Если конструкция длиннее, а конструкция является столбцом (например, в операции INSERT или UPDATE),

      IDMS

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

      IDMS

      генерирует исключение, и усечение не происходит.
    • Длиннее, чем конструкция, и конструкция является переменной хоста (например, в операции FETCH или SELECT),

      IDMS

      усекает значение справа.

    Вы не можете использовать значения графических символов в арифметических операциях.

    Значения графических символов могут быть объединены с другими значениями графических символов.

    Если одно из значений имеет тип данных VARGRAPHIC, результат будет иметь тип данных VARGRAPHIC. В противном случае результат имеет тип данных GRAPHIC.

    Если одно значение в конкатенации равно NULL, результат будет NULL. В противном случае длина результата равна сумме длин двух объединенных значений.Длина результата не может превышать 32 760.

    Для использования графических данных требуется установка

    IDMS

    DBCS.

    Числовые значения можно сравнивать только с другими числовыми значениями.

    Числовые значения могут быть присвоены только числовым конструкциям (например, столбцу с типом данных DECIMAL).

    При присвоении значения одного числового типа конструкции с другим числовым типом данных

    IDMS

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

      IDMS

      округляет значение и не генерирует исключение.

    В арифметических операциях можно использовать значения всех типов числовых данных (как приблизительных, так и точных). Кроме того, одно арифметическое выражение может включать значения более чем одного числового типа данных.

    Преобразование типов данных для сравнения и арифметики

    Когда сравнение или арифметическая операция включает два значения различных числовых типов данных,

    IDMS

    определяет, какой тип данных имеет более высокий приоритет.

    IDMS

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

     

    Тип данных с наивысшим приоритетом

    Общий тип данных для преобразования

    Точность результата сравнения или арифметической операции, когда преобразование включает десятичный тип данных, составляет:

    • Максимальное количество цифр слева от десятичной дроби в исходных операндах плюс шкала результата плюс 1, если операция является сложением или вычитанием (Шкала результата является максимальной из исходных шкал) Например, точность результата 45673 + 5.398 равно 9.
    • Сумма точности первого значения и второго значения, если операция умножения или деления. Например, точность результата 45 x 367 равна 5.

    Примеры преобразования типа данных

    Например, чтобы добавить числовое значение к целочисленному значению,

    IDMS

    преобразует оба значения в DECIMAL. Чтобы сравнить значение FLOAT со значением REAL,

    IDMS

    преобразует оба значения в DOUBLE PRECISION.

    Значения ROWID можно сравнить со следующими:

    • Другие значения ROWID: При сравнении значений ROWID разной длины

      IDMS

      дополняет более короткое значение двоичными нулями справа, чтобы сделать длины равными.
    • Двоичные значения: если ROWID и двоичные значения имеют разную длину,

      IDMS

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

    Нельзя использовать значения ROWID в операциях присваивания.

    Нельзя использовать значения ROWID в арифметических операциях.

    Нельзя использовать значения ROWID в операциях конкатенации.

    Операторы сравнения в Visual Basic

    • Статья
    • 5 минут на чтение
    • 12 участников

    Полезна ли эта страница?

    да Нет

    Любая дополнительная обратная связь?

    Отзыв будет отправлен в Microsoft: при нажатии кнопки отправки ваш отзыв будет использован для улучшения продуктов и услуг Microsoft.Политика конфиденциальности.

    Представлять на рассмотрение

    В этой статье

    Ниже приведены операторы сравнения, определенные в Visual Basic.

    < оператор

    <= оператор

    > оператор

    >= оператор

    = оператор

    <> оператор

    Оператор

    Не оператор

    Нравится Оператор

    Эти операторы сравнивают два выражения, чтобы определить, равны они или нет, а если нет, то чем они отличаются. Is Not , IsNot и Like подробно обсуждаются на отдельных страницах справки. Операторы реляционного сравнения подробно обсуждаются на этой странице.

    Синтаксис

      результат = выражение1 оператор сравнения выражение2
    результат = объект1 [Есть | не] объект2
    результат = строка Как шаблон
      

    Детали

    результат
    Обязательно. Логическое значение , представляющее результат сравнения.

    выражение1 , выражение2
    Обязательно. Любое выражение.

    оператор сравнения
    Обязательно. Любой оператор реляционного сравнения.

    объект1 , объект2
    Обязательно. Любые имена ссылочных объектов.

    строка
    Обязательно. Любое выражение String .

    шаблон
    Обязательно. Любое выражение String или диапазон символов.

    Замечания

    Следующая таблица содержит список операторов реляционного сравнения и условий, определяющих, является ли результат True или False .

    Оператор Истинно , если Ложь , если
    < (Меньше) выражение1 < выражение2 выражение1 >= выражение2
    <= (меньше или равно) выражение1 <= выражение2 выражение1 > выражение2
    > (Больше) выражение1 > выражение2 выражение1 <= выражение2
    >= (больше или равно) выражение1 >= выражение2 выражение1 < выражение2
    = (равно) выражение1 = выражение2 выражение1 <> выражение2
    <> (Не равно) выражение1 <> выражение2 выражение1 = выражение2

    Примечание

    Оператор = также используется как оператор присваивания.

    Оператор Is , IsNot и Like имеют определенные функции сравнения, которые отличаются от операторов в предыдущей таблице.

    Сравнение чисел

    При сравнении выражения типа Single с выражением типа Double выражение Single преобразуется в Double . Это поведение противоположно поведению в Visual Basic 6.

    Аналогично, при сравнении выражения типа Decimal с выражением типа Single или Double выражение Decimal преобразуется в Single или Double .Для выражений Decimal любое дробное значение меньше 1E-28 может быть потеряно. Такая потеря дробного значения может привести к тому, что два значения будут сравниваться как равные, когда это не так. По этой причине следует соблюдать осторожность при использовании равенства ( = ) для сравнения двух переменных с плавающей запятой. Безопаснее проверить, меньше ли абсолютное значение разницы между двумя числами небольшого приемлемого допуска.

    Неточность с плавающей запятой

    При работе с числами с плавающей запятой помните, что они не всегда имеют точное представление в памяти.Это может привести к неожиданным результатам при выполнении определенных операций, таких как сравнение значений и оператор модификации. Дополнительные сведения см. в разделе Устранение неполадок с типами данных.

    Сравнение строк

    При сравнении строк строковые выражения оцениваются на основе их алфавитного порядка сортировки, который зависит от параметра Option Compare .

    Option Compare Binary основывает сравнение строк на порядке сортировки, полученном из внутренних двоичных представлений символов.Порядок сортировки определяется кодовой страницей. В следующем примере показан типичный порядок двоичной сортировки.

    A < B < E < Z < a < b < e < z < À < Ê < Ø < à < ê < ø

    Option Compare Text основывает сравнение строк на нечувствительном к регистру текстовом порядке сортировки, определяемом локалью вашего приложения. Когда вы устанавливаете Option Compare Text и сортируете символы в предыдущем примере, применяется следующий порядок сортировки текста:

    (A=a) < (А= а) < (B=b) < (E=e) < (К= ê) < (Ø = ø) < (Z=z)

    Зависимость от локали

    При установке параметра Option Compare Text результат сравнения строк может зависеть от языкового стандарта, в котором выполняется приложение.Два символа могут сравниваться как равные в одной локали, но не в другой. Если вы используете сравнение строк для принятия важных решений, например, принимать ли попытку входа в систему, вы должны быть готовы к чувствительности к локали. Рассмотрите либо установку Option Compare Binary , либо вызов StrComp, который учитывает языковой стандарт.

    Бестиповое программирование с операторами реляционного сравнения

    Использование операторов реляционного сравнения с выражениями Object не разрешено в Option Strict On .Когда Option Strict имеет значение Off , а выражение1 или выражение2 является выражением Object , типы времени выполнения определяют, как они сравниваются. В следующей таблице показано, как сравниваются выражения и результат сравнения в зависимости от типа операндов во время выполнения.

    Если операнды Сравнение
    Оба Строка Сравнение сортировки на основе характеристик сортировки строк.
    Оба числовых Объекты преобразованы в Double , числовое сравнение.
    Одна цифра и одна строка Строка преобразуется в Double и выполняется числовое сравнение. Если строку нельзя преобразовать в Double , создается исключение InvalidCastException.
    Один или оба являются ссылочными типами, отличными от String Создано исключение InvalidCastException.

    Числовые сравнения обрабатывают Nothing как 0. Сравнение строк обрабатывают Nothing как "" (пустая строка).

    Перегрузка

    Операторы реляционного сравнения ( < . <= , > , >= , = , <> ) могут быть перегружены их класс или поведение , что означает, что можно переопределить их структуру или структуру. когда операнд имеет тип этого класса или структуры.Если ваш код использует какой-либо из этих операторов для такого класса или структуры, убедитесь, что вы понимаете переопределенное поведение. Для получения дополнительной информации см. Процедуры оператора.

    Обратите внимание, что оператор = может быть перегружен только как оператор реляционного сравнения, а не как оператор присваивания.

    Пример

    В следующем примере показаны различные варианты использования операторов реляционного сравнения, которые используются для сравнения выражений. Операторы реляционного сравнения возвращают Boolean результат, который показывает, соответствует ли указанное выражение True .Когда вы применяете операторы > и < к строкам, сравнение выполняется с использованием обычного алфавитного порядка сортировки строк. Этот порядок может зависеть от вашей локали. Независимо от того, учитывается регистр или нет, сортировка зависит от параметра сравнения параметров.

      Размер x As testClass
    Dim y As New testClass ()
    х = у
    Если х есть у, то
        ' Вставьте код для запуска, если x и y указывают на один и тот же экземпляр.
    Конец, если
      

    В предыдущем примере первое сравнение возвращает False , а остальные сравнения возвращают True .

    См. также

    .

    Добавить комментарий

    Ваш адрес email не будет опубликован.