Maison > Article > interface Web > js implémentation de principes d'inversion de bits spécifiques et de compétences examples_javascript
Lorsque je suis allé chez Huawei pour un entretien, je n'étais pas bien préparé ; je n'ai pas posé ni vérifié clairement le processus d'entretien. En conséquence, on m'a demandé de répondre aux questions sur l'ordinateur dès que j'ai réussi. ce qui était vraiment un peu mal préparé. L'auteur est un ingénieur Web Java doué en front-end, et les connaissances de base en programmation de bas niveau sont depuis longtemps inconnues. La question du test informatique a rencontré cette question d'opération sur bits. On dit que c'est très simple et le principe est très clair pour moi. Cependant, comme je n'ai pas effectué d'opérations sur bits depuis de nombreuses années et que je n'ai jamais effectué d'opérations sur bits Java, le résultat est vraiment honteux...
Le délai de test informatique est d'une heure. Le langage peut être C ou Java. Quel autre langage de script ? Il a fallu près de trois heures à l'auteur pour terminer les questions en Java. J'ai honte... J'utiliserai JS quand. Je reviens. J'ai réimplémenté une version simple et je l'ai publiée aujourd'hui.
La question est : saisissez cycliquement chaque groupe de deux nombres hexadécimaux et n (0<=n<31). Ce que nous devons faire est d'inverser le nième chiffre de l'hexadécimal, puis de sortir le. résultat correspondant au format hexadécimal.
Je n'entrerai pas dans les détails du processus qui m'a pris plus de deux heures. Voici l'implémentation de js, qui est une connaissance de base très simple des opérations sur les bits. Le principe est simple, il suffit de décaler 1 vers la gauche de n bits, puis de le XOR avec le numéro d'origine :
function bitOper(hex, n){ var num = parseInt(hex); num ^= (1<<n); return num.toString(16); } console.log(bitOper(0x1234, 3)); //123c
En raison de la limitation de 32 bits du type entier js, 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).