Si hallas algún problema en tu código o trabajo, recuerda probar siempre en un entorno de testing antes añadir el código al proyecto final.
Solución:
29 = 512 valores, porque esa es la cantidad de combinaciones de ceros y unos que puedes tener.
Sin embargo, lo que representan esos valores dependerá del sistema que esté utilizando. Si es un entero sin signo, tendrás:
000000000 = 0 (min)
000000001 = 1
...
111111110 = 510
111111111 = 511 (max)
En el complemento a dos, que se usa comúnmente para representar números enteros en binario, tendrás:
000000000 = 0
000000001 = 1
...
011111110 = 254
011111111 = 255 (max)
100000000 = -256 (min) <- yay integer overflow
100000001 = -255
...
111111110 = -2
111111111 = -1
En general, con k bits que puedes representar 2k valores. Su rango dependerá del sistema que esté utilizando:
Sin firmar: 0 a 2k-1
Firmado: -2k-1 a 2k-1-1
Lo que te estás perdiendo: cero es un valor
Una mejor manera de resolverlo es empezar poco a poco.
Comencemos con 1 bit. que puede ser 1
o 0
. Eso es 2 valores, o 10
en binario.
Ahora 2 bits, que pueden ser 00
, 01
, 10
o 11
Eso es 4 valores, o 100
en binario... ¿Ves el patrón?
Puedes añadir valor a nuestro contenido aportando tu experiencia en las notas.