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.