Arithmetic and Logic - Algorand Specifications
Keyboard shortcuts
Press ← or → to navigate between chapters
Press S or / to search in the book
Press ? to show this help
Press Esc to hide this help
- Auto
- Light
- Dark
Algorand Specifications
| OPCODE | DESCRIPTION |
|---|---|
+ |
A plus B. Fail on overflow. |
- |
A minus B. Fail if B > A. |
/ |
A divided by B (truncated division). Fail if B == 0. |
* |
A times B. Fail on overflow. |
< |
A less than B => {0 or 1} |
> |
A greater than B => {0 or 1} |
<= |
A less than or equal to B => {0 or 1} |
>= |
A greater than or equal to B => {0 or 1} |
&& |
A is not zero and B is not zero => {0 or 1} |
| ` | |
shl |
A times 2^B, modulo 2^64 |
shr |
A divided by 2^B |
sqrt |
The largest integer I such that I^2 <= A |
bitlen |
The highest set bit in A. If A is a byte-array, it is interpreted as a big-endian unsigned integer. bitlen of 0 is 0, bitlen of 8 is 4 |
exp |
A raised to the Bth power. Fail if A == B == 0 and on overflow |
== |
A is equal to B => {0 or 1} |
!= |
A is not equal to B => {0 or 1} |
! |
A == 0 yields 1; else 0 |
itob |
converts uint64 A to big-endian byte array, always of length 8 |
btoi |
converts big-endian byte array A to uint64. Fails if len(A) > 8. Padded by leading 0s if len(A) < 8. |
% |
A modulo B. Fail if B == 0. |
| ` | ` |
& |
A bitwise-and B |
^ |
A bitwise-xor B |
~ |
bitwise invert value A |
mulw |
A times B as a 128-bit result in two uint64s. X is the high 64 bits, Y is the low |
addw |
A plus B as a 128-bit result. X is the carry-bit, Y is the low-order 64 bits. |
divw |
A,B / C. Fail if C == 0 or if result overflows. |
divmodw |
W,X = (A,B / C,D); Y,Z = (A,B modulo C,D) |
expw |
A raised to the Bth power as a 128-bit result in two uint64s. X is the high 64 bits, Y is the low. Fail if A == B == 0 or if the results exceeds 2^128-1 |