In mathematics, a unary operation is an operation with only one operand, i.e. a single input. This is in contrast to binary operations, which use two operands. An example is any function , where is a set; the function is a unary operation on .
Common notations are prefix notation (e.g. ¬, −), postfix notation (e.g. factorial ), functional notation (e.g. or ), and superscripts (e.g. transpose ). Other notations exist as well, for example, in the case of the square root, a horizontal bar extending the square root sign over the argument can indicate the extent of the argument.
Examples
Absolute value
Obtaining the absolute value of a number is a unary operation. This function is defined as <math>|n| = \begin{cases} n, & \mbox{if } n\geq0 \\ -n, & \mbox{if } n<0 \end{cases}</math> where <math>|n|</math> is the absolute value of <math>n</math>.
Negation
Negation is used to find the negative value of a single number. Here are some examples:
:<math>-(3) = -3</math>
:<math>-( -3) = 3</math>
Factorial
For any positive integer n, the product of the integers less than or equal to n is a unary operation called factorial. In the context of complex numbers, the gamma function is a unary operation extension of factorial.
Trigonometry
In trigonometry, the trigonometric functions, such as <math>\sin</math>, <math>\cos</math>, and <math>\tan</math>, can be seen as unary operations. This is because it is possible to provide only one term as input for these functions and retrieve a result. By contrast, binary operations, such as addition, require two different terms to compute a result.
Examples from programming languages
Below is a table summarizing common unary operators along with their symbols, description, and examples:
{| class="wikitable"
|-
! Operator !! Symbol !! Description !! Example
|-
| Increment || <code>++</code> || Increases the value of a variable by 1 || <code>x = 2; ++x; // x is now 3</code>
|-
| Decrement || <code>--</code> || Decreases the value of a variable by 1 || <code>y = 10; --y; // y is now 9</code>
|-
| Unary Plus || <code>+</code> || Indicates a positive value || <code>a = -5; b = +a; // b is -5</code>
|-
| Unary Minus || <code>-</code> || Indicates a negative value || <code>c = 4; d = -c; // d is -4</code>
|-
| Logical NOT || <code>!</code> || Negates the truth value of a Boolean expression || <code>flag = true; result = !flag; // result is false</code>
|-
| Bitwise NOT || <code>~</code> || Bitwise negation, flips the bits of an integer || <code>num = 5; result = ~num; // result is -6</code>
|}
JavaScript
In JavaScript, these operators are unary:
- Increment: <code>++<span style="color:gray;">x</span></code>, <code><span style="color:gray;">x</span>++</code>
- Decrement: <code>--<span style="color:gray;">x</span></code>, <code><span style="color:gray;">x</span>--</code>
- Positive: <code>+<span style="color:gray;">x</span></code>
- Negative: <code>-<span style="color:gray;">x</span></code>
- Ones' complement: <code>~<span style="color:gray;">x</span></code>
- Logical negation: <code>!<span style="color:gray;">x</span></code>
C family of languages
In the C family of languages, the following operators are unary:
- Increment: <code>++<span style="color:gray;">x</span></code>, <code><span style="color:gray;">x</span>++</code>
- Decrement: <code>--<span style="color:gray;">x</span></code>, <code><span style="color:gray;">x</span>--</code>
- Address: <code>&<span style="color:gray;">x</span></code>
- Indirection: <code>*<span style="color:gray;">x</span></code>
- Positive: <code>+<span style="color:gray;">x</span></code>
- Negative: <code>-<span style="color:gray;">x</span></code>
- Ones' complement: <code>~<span style="color:gray;">x</span></code>
- Logical negation: <code>!<span style="color:gray;">x</span></code>
- Sizeof: <code>sizeof <span style="color:gray;">x</span>, sizeof(<span style="color:gray;">type-name</span>)</code>
- Cast: <code>(type-name) <span style="color:gray;">cast-expression</span></code>
Unix shell (Bash)
In the Unix shell (Bash/Bourne Shell), e.g., the following operators are unary:
- Pre and Post-Increment: <code>++<span style="color:gray;">$x</span></code>, <code><span style="color:gray;">$x</span>++</code>
- Pre and Post-Decrement: <code>--<span style="color:gray;">$x</span></code>, <code><span style="color:gray;">$x</span>--</code>
- Positive: <code>+<span style="color:gray;">$x</span></code>
- Negative: <code>-<span style="color:gray;">$x</span></code>
- Logical negation: <code>!<span style="color:gray;">$x</span></code>
- Simple expansion: <code>$<span style="color:gray;">x</span></code>
- Complex expansion: <code>${#<span style="color:gray;">x</span>}</code>
PowerShell
In the PowerShell, the following operators are unary:
- Increment: <code>++<span style="color:gray;">$x</span></code>, <code><span style="color:gray;">$x</span>++</code>
- Decrement: <code>--<span style="color:gray;">$x</span></code>, <code><span style="color:gray;">$x</span>--</code>
- Positive: <code>+<span style="color:gray;">$x</span></code>
- Negative: <code>-<span style="color:gray;">$x</span></code>
- Logical negation: <code>!<span style="color:gray;">$x</span></code>
- Invoke in current scope: <code>.<span style="color:gray;">$x</span></code>
- Invoke in new scope: <code>&<span style="color:gray;">$x</span></code>
- Cast: <code>[type-name] <span style="color:gray;">cast-expression</span></code>
- Cast: <code>+<span style="color:gray;">$x</span></code>
- Array: <code>,<span style="color:gray;">$array</span></code>
See also
- Unary function
- Binary operation
- Iterated binary operation
- Binary function
- Ternary operation
- Arity
- Operation (mathematics)
- Operator (programming)
