Когда я поехал в Huawei на собеседование, я не готовился; Процесс собеседования не был очищен или проверен, и в результате я был застигнут врасплох, когда я пошел на компьютер. Автор-это веб-инженер Java, который хорош в фронте, и его основные базовые знания о программировании уже давно не знали. Когда я столкнулся с этим вопросом об эксплуатации битов в компьютерном тесте, это было очень просто, и автор был очень четким по поводу принципа, но так как я не делал битовую работу в течение многих лет, и я никогда не выполнял операцию на джаве, поэтому результат был действительно непристойным ...
Время тестирования компьютера составляет один час. Язык может быть выбран как C или Java. Какой язык сценариев есть? Мне потребовалось почти три часа, чтобы использовать Java, чтобы едва справиться с проблемой. Мне стыдно ... я вернулся и использовал JS, чтобы переосмыслить простую версию, и я собрал ее сегодня.
Вопрос: ввод цикла двух чисел HEX и N (0 <= N <31), HEX - это шестнадцатеричное число. Что нам нужно сделать, так это инвертировать N -й позиции HEX, а затем вывести соответствующий результат в шестнадцатеричной форме.
Я не буду вдаваться в подробности после более чем двух часов броска. Здесь я даю вам реализацию JS, которая является очень простым базовым знанием битовых операций. Чтобы поместить его в предложение, просто переключите 1 на левые n биты кусочком, а затем просто XOR с исходным номером:
функция bitoper (hex, n) {var num = parseint (hex); num ^= (1 << n); вернуть num.toString (16); } console.log (bitoper (0x1234, 3)); // 123cПоскольку целочисленный тип JS имеет только 32-битный ограничение, приведенный выше пример код поддерживает только простой случай n <31 (бит 31-это бит знака).