Что делает калькулятор ИЛИ-НЕ (NOR)?
Этот инструмент вычисляет побитовое ИЛИ-НЕ двух целых чисел по формуле результат = ~(A | B). Операция NOR (от «NOT OR» — «не ИЛИ») — одна из базовых логических операций. Сначала выполняется ИЛИ для каждой пары соответствующих битов, а затем результат инвертируется. Бит на выходе равен 1 только тогда, когда оба входных бита равны 0. NOR является функционально полной операцией: из одних только элементов ИЛИ-НЕ можно построить любой другой логический вентиль — именно поэтому она так важна в цифровой электронике.
Как пользоваться калькулятором
Введите два целых числа (A и B) и выберите разрядность (8, 16, 32 или 64 бита). Калькулятор покажет результат NOR как беззнаковое значение этой разрядности, а также промежуточное значение ИЛИ и двоичное представление. Выбор меньшей разрядности просто отбрасывает старшие биты с помощью маски — это удобно, когда вы моделируете регистры фиксированной длины.
Разбор формулы
$$\text{NOR} = \sim\left(\text{A} \mathbin{|} \text{B}\right) \mathbin{\&} \left(2^{\text{Bits}} - 1\right)$$
Результат ИЛИ для двух битов равен 1, если хотя бы один из них равен 1. NOR инвертирует это значение, поэтому каждый бит подчиняется таблице истинности: 0 NOR 0 = 1, 0 NOR 1 = 0, 1 NOR 0 = 0, 1 NOR 1 = 0. Поскольку «чистая» инверсия (~) устанавливает все старшие биты в 1, мы накладываем на результат маску \(2^{n}-1\), чтобы он оставался в пределах выбранной беззнаковой разрядности.
Пример расчёта
Пусть A = 12 (в двоичном виде 1100) и B = 10 (в двоичном виде 1010) при разрядности 8 бит. Тогда \(\text{A} \mathbin{|} \text{B} = 1110 = 14\). Инвертируя в пределах 8 бит, получаем \(11110001 = 241\). Итак, $$12 \text{ NOR } 10 = 241$$ при 8-битной разрядности.
Частые вопросы
Почему результат меняется при смене разрядности? Инверсия переворачивает каждый бит, поэтому число ведущих единиц зависит от того, сколько битов отведено под число. Чем больше разрядность, тем больше беззнаковый результат.
Можно ли использовать отрицательные числа? Входные данные обрабатываются как целые числа; для корректных результатов используйте неотрицательные целые в пределах выбранной разрядности.
Это то же самое, что NAND? Нет. NAND — это \(\sim(\text{A} \mathbin{\&} \text{B})\) («не И»), а NOR — это \(\sim(\text{A} \mathbin{|} \text{B})\) («не ИЛИ»). Обе операции универсальны, но дают разные результаты.
Таблица истинности операции NOR и маски битовой ширины
Побитовая операция NOR комбинирует два операнда бит за битом. Для каждой пары битов она сначала вычисляет OR, затем инвертирует результат. Иными словами, выходной бит равен 1 только тогда, когда оба входных бита равны 0; во всех остальных случаях выходной бит равен 0. Это отрицание операции OR, отсюда и название NOR (NOT-OR).
| A | B | A | B | NOR = ~(A | B) |
|---|---|---|---|
| 0 | 0 | 0 | 1 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 1 | 0 |
Поскольку операция NOT инвертирует каждый бит, результат зависит от выбранной битовой ширины. После выполнения OR операндов и инверсии значение маскируется до ширины \(n\) с использованием \(2^{n}-1\), так что остаются только самые младшие \(n\) битов. Маски для каждой поддерживаемой ширины показаны ниже.
| Битовая ширина \(n\) | Маска \(2^{n}-1\) (десятичное) | Максимальное значение без знака |
|---|---|---|
| 8 | 255 | 255 |
| 16 | 65535 | 65535 |
| 32 | 4294967295 | 4294967295 |
| 64 | 18446744073709551615 | 18446744073709551615 |
Например, с \(A = 12\) и \(B = 10\) при 8-битовой ширине: \(12 | 10 = 14\), а \(\sim 14\) в маске 8 битов дает 241. Промежуточный результат OR \(12 | 10 = \) 14 можно проверить независимо.
Ключевые термины
- Побитовая операция NOR
- Операция, которая производит результат, каждый бит которого равен 1 только тогда, когда соответствующие биты обоих операндов равны 0. Она определяется как инверсия результата OR: \(\text{NOR} = \sim(A | B)\).
- OR (побитовая)
- Операция, которая устанавливает каждый бит результата в 1, если по крайней мере один из двух соответствующих входных битов равен 1, и в 0 только когда оба равны 0.
- NOT / инверсия (~)
- Унарная операция, которая переворачивает каждый бит: каждый 0 становится 1, а каждый 1 становится 0. При операции NOR она применяется к результату OR, и её эффект ограничен выбранной битовой шириной.
- Битовая ширина
- Количество битов, используемых для представления значения (здесь 8, 16, 32 или 64). Она определяет, сколько битов инвертированный результат сохранит, и следовательно, числовой диапазон выходного значения.
- Маскирование
- Использование побитовой операции AND со значением вроде \(2^{n}-1\) для сохранения только самых младших \(n\) битов и отбрасывания старших битов. Это ограничивает результат NOR выбранной шириной.
- Целое число без знака
- Представление целого числа без бита знака, поэтому все битовые комбинации представляют неотрицательные значения от 0 до \(2^{n}-1\). Результат NOR выводится как значение без знака.
- Функционально полный (универсальный) элемент
- Логический элемент, из которого можно построить любую булеву функцию, используя только копии самого себя. NOR функционально полный: AND, OR и NOT можно построить исключительно из элементов NOR, поэтому он называется универсальным элементом.