Del cuerpo completo del artículo de Steve Yegge,
Los candidatos deben saber qué bits y bytes son. Deberían poder contar en binario; por ejemplo, deberían poder decirte qué es 2 ^ 5 o 2 ^ 10, en decimal. No deberían mirarlo fijamente cuando pregunta con 2 ^ 16 es. Es un número especial. Deberían saberlo.
Me desconcertó la parte que usted citó en la pregunta; Parecía que un candidato debería ser capaz de describir su importancia, pero en contexto está diciendo que los candidatos deberían saber, fuera de la cabeza, cuál es la conversión decimal de 2 16 .
La importancia de esto es que dado que los humanos todavía usamos decimales para contar, especialmente en nuestras cabezas (en la mayoría de las circunstancias), necesitamos conocer las capacidades aproximadas de los bloques de bytes comunes que usamos para el almacenamiento, la memoria o incluso la codificación de caracteres. Como un byte es de 8 bits, los más comunes son 8, 16, 24, 32 y 64.
En la actualidad, diría que 2 32 es la capacidad más común con la que se enfrenta un desarrollador. Sospecho de los desarrolladores que no saben que 2 32 es aproximadamente 4 mil millones (valor máximo de ~ 2 mil millones si está firmado), ya que significa que nunca se han molestado en averiguar aproximadamente cuántos registros se pueden almacenar en sus bases de datos que use s de 32 bits int
para las claves primarias, o cuando el código antiguo que usa s de 32 bits int
para ID, fechas, etc., deba refactorizarse a 64 bits. 1
2 16 es la capacidad total de Java short
. (Números totales entre -2 15 y 2 15 -1)
Un desarrollador debe saber de memoria qué es 8 bits. Entre los muchos usos comunes está la codificación de caracteres ASCII.
No esperaría que un programador supiera 2 14 o 2 18 , pero probablemente esperaría que supiera 2 16 ya que es un número muy común y un número lo suficientemente corto (65536) para recordar fácilmente el número completo.
1: Si navega en las tablas de clasificación de Call of Duty: MW2 o iPhone Game Center, a menudo verá tramposos en la parte superior con valores de puntaje altos de 2,147,483,647, que es 2 31 -1, el valor máximo de un entero de 2 32 firmado .