De acuerdo, me siento estúpido al preguntar esto, pero en el artículo de Jeff: Cómo obtener la pantalla del teléfono de la entrevista correctamente y originalmente en las 5 preguntas esenciales de la pantalla del teléfono :
No deberían mirarlo fijamente cuando pregunta con 2 ^ 16 es. Es un número especial. Deberían saberlo.
He sido desarrollador \ ingeniero de software \ code monkey \ lo que sea por un tiempo, y creo que nunca me he encontrado con esto. Quiero decir, ciertamente puedo contar valores binarios, hacer operaciones básicas en ellos, etc., etc. Pero no veo qué tiene de especial este valor.
2^16.1
también tiene una potencia de 2, pero nada especial. Lo mismo para2^0
.2**0
es1
, que de hecho es un número muy especial;) Pero sí, generalmente solo nos interesan las potencias de dos donde el exponente es un número entero positivo.Respuestas:
(2 16 - 1) o 65535 o
0xFFFF
"64k" es el valor máximo de 2 bytes. Durante mucho tiempo, las CPU utilizaron una arquitectura de 16 bits y los sistemas operativos también se basaron en operaciones de 16 bits y "palabras" . Había comandos de 16 bits y direcciones de memoria de 16 bits. Muchos sistemas / compiladores todavía usan 16 bits para enteros.Entonces, (2 16 - 1) es especial porque es el número más grande que puede contener un entero de 16 bits (sin signo) y la dirección de memoria más grande a la que puede acceder una arquitectura de 16 bits.
fuente
Del cuerpo completo del artículo de Steve Yegge,
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 bitsint
para ID, fechas, etc., deba refactorizarse a 64 bits. 12 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 .
fuente
La única razón por la que puedo ver que 2 16 es "especial" es porque es uno más que el número entero más alto que puede almacenar en un solo registro en un sistema operativo de 16 bits.
Del mismo modo, podría aplicar la misma lógica a 2 sistemas operativos de 32 y 32 bits.
Necesito saber más contexto para la pregunta antes de poder decir si fue un conocimiento significativo o no.
fuente