The *number* type in Rax is denoted by
the `#`

symbol and is similar to
the `int`

type in C, with the difference that Rax
numbers are always 64 bit. A variable of type `#`

can
thus contain integer numbers from the following range:

−9,223,372,036,854,775,808 .. 9,223,372,036,854,775,807

Rax does not have an unsigned type.

Rax has a pretty standard set of operators defined on
the `#`

. A summary of all these operators you can find
below.

**Table 3.2. Operators defined on #**

Operator name | Syntax | Explanation |
---|---|---|

Arithmetic operators | ||

Assignment | ` a := b ` | |

Addition | ` a + b ` | |

Subtraction | ` a - b ` | |

Unary plus | ` +a ` | |

Unary minus | ` -a ` | |

Magnitude value | ` #a ` | |

Multiplication | ` a * b ` | |

Division | ` a / b ` | This is an integer division. If `a` is not
divisible by `b` then the result is rounded down. |

Modulo | ` a % b ` | |

Power | ` a ** b ` | |

Binary floor | ` a :\ b ` | Returns the smallest multiple of b greater than or equal
to a. For example: `7 :\ 3 == 6` |

Binary ceiling | ` a :/ b ` | Returns the greatest multiple of b smaller than or equal
to a. For example: `7 :/ 3 == 9` |

Bitwise operators | ||
---|---|---|

Bitwise not | ` ~a ` | |

Bitwise and | ` a & b ` | |

Bitwise or | ` a | b ` | |

Bitwise xor | ` a ^ b ` | |

Bitwise left shift | ` a << b ` | |

Bitwise right shift | ` a >> b ` |

Comparison operators | ||
---|---|---|

Equal to | ` a == b ` | |

Not equal to | ` a != b ` | |

Greater than | ` a > b ` | |

Less than | ` a < b ` | |

Greater than or equal to | ` a >= b ` | |

Less than or equal to | ` a <= b ` |