Quand je suis allé à Huawei pour une interview, je ne me suis pas bien préparé; Le processus d'entrevue n'a pas été effacé ni vérifié, et par conséquent, j'ai été pris au dépourvu lorsque je suis allé sur l'ordinateur. L'auteur est un ingénieur Web Java qui est bon en front-end, et sa connaissance de base sous-jacente sous-jacente n'est pas familière depuis longtemps. Lorsque j'ai rencontré cette question d'opération de bit dans le test informatique, c'était très simple, et l'auteur était très clair sur le principe, mais comme je n'avais pas fait de l'opération de bit depuis de nombreuses années, et je n'avais jamais effectué de fonctionnement de Java, donc le résultat était vraiment indécent ...
Le temps de test de l'ordinateur est d'une heure. La langue peut être sélectionnée comme C ou Java. Quelle langue de script y a-t-il? Il m'a fallu près de trois heures pour utiliser Java pour faire à peine le problème. J'ai honte ... Je suis revenu et j'ai utilisé JS pour réimplémenter une version simple, et je l'ai compilée aujourd'hui.
La question est: entrée en boucle de deux nombres hexadérommandes et n (0 <= n <31), Hex est un nombre hexadécimal. Ce que nous devons faire, c'est inverser la nième position de Hex, puis sortir le résultat correspondant sous forme hexadécimale.
Je n'entrerai pas dans les détails après plus de deux heures de lancer. Ici, je vous donne la mise en œuvre de JS, qui est une connaissance de base très simple des opérations bit. Pour le mettre dans une phrase, déplacez-vous 1 vers les n bits gauche, puis juste XOR avec le numéro d'origine:
fonction bitoper (hex, n) {var num = parseInt (hex); num ^ = (1 << n); return num.tostring (16); } console.log (bitoper (0x1234, 3)); // 123cÉtant donné que le type entier JS n'a qu'une limite de 32 bits, l'exemple de code ci-dessus ne prend en charge que le cas simple de n <31 (le bit 31 est le bit de signe).