# 1.5.3 Normal

There are several normal operators which return the result defined for each:

expression1` + `expression
The result of this is the sum of the two expressions.

expression1` - `expression2
The result of this is the value of expression2 subtracted from expression1.

expression1` * `expression2
The result of this is the value of expression1 multiplied by expression2.

expression1` / `expression2
The result of this is the value of expression1 divided by expression2.

expression1` % `expression2
The result of this is the value of the remainder after dividing expression1 by expression2. Also called the modulo operator.

expression1` & `expression2
Returns a bitwise AND operation done on expression1 and expression2. The result is a value the same size as the expressions with its bits modified using the following rules: Both bits must be 1 (on) to result in 1 (on), otherwise the result is 0 (off).

e1e2Result
000
010
100
111

expression1` | `expression2
Returns a bitwise OR operation done on expression1 and expression2. The result is a value the same size as the expressions with its bits modified using the following rules: Both bits must be 0 (off) to result in 0 (off), otherwise the result is 1 (on).

e1e2Result
000
011
101
111

expression1` ^ `expression2
Returns a bitwise XOR operation done on expression1 and expression2. The result is a value the same size as the expressions with its bits modified using the following rules: If both bits are the same, then the result is 0 (off), otherwise the result is 1 (on).

e1e2Result
000
011
101
110

expression1` >> `shift_value
Returns expression1 with its bits shifted to the right by the shift_value. The leftmost bits are replaced with zeros if the value is nonnegative or unsigned. This result is the integer part of expression1 divided by 2 raised to the power of shift_value. If expression1 is signed, then the result is implementation specific.

expression1` << `shift_value
Returns expression1 with its bits shifted to the left by the shift_value. The rightmost bits are replaced with zeros. This result is the value of expression1multiplied by the value of 2 raised to the power of shift_value. If expression1 is signed, then the result is implementation specific.