Necesito entender un par de cosas:
uint
es la abreviatura de uint256
, por lo que puede almacenar 2^256 valores; debido a que no tiene signo, el valor máximo es 2^256-1 (el cero necesita un espacio). ¿Cuál es el valor de entrada máximo para el parámetro de función uint256?int
es la abreviatura de int256
y puede almacenar la misma cantidad de valores, porque está firmado, el valor máximo (positivo) es 2^256 / 2 - 1.Entonces los valores máximos de uint
y int
no son los mismos. Tienen la misma cantidad de valores pero int
necesitan almacenar valores también para números negativos.
Puede encontrar más detalles en: Valores máximos/mínimos de tipos de datos estándar
Funciona igual que otros lenguajes de programación.
uint
puede almacenar 2^256-1
números.
int
almacenar la mitad de ella. por ejemplo 2^256/2-1
, números.
Int8 — [-128 : 127]
Int16 — [-32768 : 32767]
Int32 — [-2147483648 : 2147483647]
Int64 — [-9223372036854775808 : 9223372036854775807]
Int128 — [-170141183460469231731687303715884105728 : 170141183460469231731687303715884105727]
Int256 — [-57896044618658097711785492504343953926634992332820282019728792003956564819968 : 57896044618658097711785492504343953926634992332820282019728792003956564819967]
UInt8 — [0 : 255]
UInt16 — [0 : 65535]
UInt32 — [0 : 4294967295]
UInt64 — [0 : 18446744073709551615]
UInt128 — [0 : 340282366920938463463374607431768211455]
UInt256 — [0 : 115792089237316195423570985008687907853269984665640564039457584007913129639935]
No confíes en verificar
Esto es lo que uint8 puede almacenar en decimales: 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 o 2^256
2^7 * 1 + 2^6 * 1 + 2^5 * 1 + 2^4 * 1 + 2^3 * 1 + 2^2 * 1 + 2^1 * 1 + 2^0 * 1
= 2^8 - 1
= 255
De la misma manera, uint256 puede almacenar en decimales:
2^256 - 1
= 115792089237316195423570985008687907853269984665640564039457584007913129639935
Igor Yalovoy