OK, je me sens stupide de poser cette question - mais dans l'article de Jeff: Obtenir l'écran de téléphone de l'interview correct et initialement indiqué dans les 5 questions essentielles de l'écran de téléphone :
Ils ne devraient pas vous regarder fixement quand vous demandez avec 2 ^ 16 is. C'est un numéro spécial. Ils devraient le savoir.
Je suis développeur \ ingénieur en logiciel \ code singe \, peu importe, depuis un moment maintenant, et je ne pense pas avoir jamais rencontré cela. Je veux dire, je peux certainement compter les valeurs binaires, faire des opérations de base dessus, etc. Mais je ne vois pas ce qui est "spécial" dans cette valeur.
2^16.1
est aussi une puissance de 2, mais rien de spécial. Pareil pour2^0
.2**0
is1
, qui est en fait un nombre très spécial;) Mais oui, nous ne sommes généralement concernés que par les puissances de deux où l'exposant est un entier positif.Réponses:
(2 16 - 1) ou 65535 ou
0xFFFF
ou "64k" est la valeur maximale de 2 octets. Pendant longtemps, les processeurs utilisaient une architecture 16 bits et les systèmes d'exploitation étaient également basés sur des opérations et des "mots" 16 bits . Il y avait des commandes 16 bits et des adresses mémoire 16 bits. Beaucoup de systèmes / compilateurs utilisent encore 16 bits pour les entiers.Donc, (2 16 - 1) est spécial parce que c'est le plus grand nombre qu'un entier 16 bits (non signé) peut contenir et la plus grande adresse mémoire à laquelle une architecture 16 bits peut accéder.
la source
De tout le corps de l'article de Steve Yegge,
J'ai été ému du morceau que vous avez cité dans la question; On aurait dit qu'un candidat devrait être capable de décrire son importance, mais il dit dans son contexte que les candidats doivent savoir, de mémoire, ce qu'est la conversion décimale de 2 16 .
L’importance de cela est que, puisque nous utilisons toujours le nombre décimal pour le comptage, en particulier dans notre tête (dans la plupart des cas), nous devons connaître les capacités approximatives des blocs d’octets communs que nous utilisons pour le stockage, la mémoire ou même l’encodage de caractères. Comme un octet est composé de 8 bits, les plus courants sont 8, 16, 24, 32 et 64.
À l'heure actuelle, je dirais que 2 32 est la capacité la plus courante rencontrée par un développeur. Je me méfie des développeurs qui ne savent pas que 2 32 représente environ 4 milliards (valeur maximale d'environ 2 milliards si signés), car cela signifie qu'ils ne se sont jamais souciés de savoir approximativement combien d'enregistrements peuvent être stockés dans leurs bases de données qui utilisez 32 bits
int
pour les clés primaires ou lorsqu'un ancien code utilisant 32 bitsint
pour les identifiants, les dates, etc. doit être remodelé en 64 bits. 12 16 est la capacité totale de Java
short
. (Nombre total compris entre -2 15 et 2 15 -1)Un développeur doit savoir par cœur ce qu’est 8 bits. Le codage de caractères ASCII est l’un des nombreux usages courants.
Je ne m'attendrais pas à ce qu'un programmeur connaisse 2 14 ou 2 18 , mais je m'attendrais probablement à ce qu'il connaisse 2 16 puisqu'il s'agit d'un nombre très courant et d'un nombre suffisamment court (65 536) pour mémoriser facilement le nombre complet.
1: Si vous parcourez les classements de Call of Duty: MW2 ou iPhone Game Center, vous verrez souvent des tricheurs en haut du classement avec un score élevé de 2 147 483 647, ce qui correspond à 2 31 -1, la valeur maximale d'un entier signé de 2 32 .
la source
La seule raison pour laquelle je vois que 2 16 est considéré comme "spécial" est parce que c'est un entier de plus que le plus grand entier que vous pouvez stocker dans un seul registre sur un système d'exploitation 16 bits.
De même, vous pouvez appliquer la même logique à 2 systèmes d'exploitation 32 et 32 bits.
J'aurais besoin de connaître davantage le contexte de la question avant de pouvoir dire s'il s'agissait d'un élément de connaissance important ou non.
la source