>  기사  >  웹 프론트엔드  >  특정 비트 반전 원칙 및 example_javascript 기술의 Node.js 구현

특정 비트 반전 원칙 및 example_javascript 기술의 Node.js 구현

WBOY
WBOY원래의
2016-05-16 16:42:551357검색

화웨이에 면접을 갔을 때, 면접 과정을 제대로 묻지도, 확인하지도 않아서 합격하자마자 컴퓨터로 질문을 하라고 하더군요. , 정말 준비가 조금 안 됐어요. 저자는 프론트엔드에 능숙한 자바 웹 엔지니어로, 기본적인 저수준 프로그래밍 지식은 오랫동안 낯설었다. 컴퓨터 기반 시험 문제는 비트 연산에 관한 문제로 나왔습니다. 매우 간단하고 원리도 매우 분명합니다. 그러나 저는 수년간 비트 연산을 해 본 적이 없고, 한 번도 해본 적이 없습니다. Java 비트 연산, 결과가 정말 불명예스럽습니다...

컴퓨터 테스트 시간 제한은 1시간입니다. 언어는 C 또는 Java일 수 있습니다. 다른 스크립트 언어를 선택할 수 있습니까? Java로 문제를 완료하는 데 거의 3시간이 걸렸습니다. JS가 돌아오면 간단한 버전을 다시 구현하여 오늘 게시했습니다.

질문은 두 숫자 16진수와 n(0<=n<31)으로 구성된 각 그룹을 반복하는 것입니다. 16진수는 16진수의 n번째 숫자를 반전한 다음 출력하는 것입니다. 16진수 형식의 해당 결과입니다.

2시간 이상 소요된 프로세스에 대해서는 자세히 설명하지 않겠습니다. 여기에서는 비트 연산에 대한 매우 간단한 기본 지식인 js의 구현을 소개합니다. 원리는 간단합니다. 1을 n 비트만큼 왼쪽으로 이동한 다음 원래 숫자와 XOR하면 됩니다.

function bitOper(hex, n){ 
var num = parseInt(hex); 
num ^= (1<<n); 
return num.toString(16); 
} 
console.log(bitOper(0x1234, 3)); //123c

js 정수형의 32비트 제한으로 인해 위 예제 코드는 n<31(비트 31은 부호 비트)의 간단한 경우만 지원합니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.