프런트 엔드에서 일하는 사람들은 바이너리를 접할 기회가 거의 없을 것입니다. 이러한 비트 작업은 하위 계층에서 고려해야 할 사항이 아닙니까?
어제 바이너리에 관련된 질문을 봤는데, 비트 연산을 사용하든 안하든 상관없이 JS의 언어 기능 덕분에 쉽게 풀 수 있었습니다.
은 다음과 같이 설명합니다.
양의 십진 정수를 매개변수로 받아서 이를 이진수로 표현하고 그 자리가 1인 숫자를 반환하는 함수를 작성합니다.
예:
1234을 이진수로 표현하면 1001101 00입니다. 10, 51이므로 5이 반환됩니다.
이 설명을 읽고 가장 먼저 생각난 것은 선생님께서 10진수를 2진수로 변환하는 방법을 가르쳐주셨다는 것입니다. (책을 이용하면 더 쉬울 것 같아요 ^_^) .
다행스럽게도 저는 기억력이 좋아서 빨리 생각해냈습니다. 이 양의 정수에 대해 먼저 2의 나머지를 취한 다음 2로 나눕니다. , 그리고 결과를 확인하세요 2의 나머지 부분을 2로 나눕니다... 결과가 0이 될 때까지.
그리고 위의 과정에서 변수를 이용하여 나머지가 1되는 횟수를 기록하고 최종적으로 리턴해줍니다.
그래서 우리는 다음과 같은 접근 방식을 생각해냈습니다.
var countBits = function(n) { var count = 0; while(n > 0){ var res = n % 2; if(res == 1){ count++; } n = parseInt(n / 2); } return count; };
이 코드와 아이디어는 상당히 만족스럽지만 언어 기능을 최대한 활용하지는 않습니다. JS의.
JS에 10진수를 2진수로 변환해주는 API가 미리 만들어져 있지 않나요?
number.toString(2), 이진 문자열을 얻지 않나요?
결과가 다 나왔으니 1의 숫자를 하나씩 검색해서 돌아오세요.
흠, 위 두 가지 방법은 좋지만 목적은 같고, 가장 효율적인 방법은 비트 연산입니다.
마지막으로 해외 전문가가 작성한 비트 운영 솔루션을 살펴 보겠습니다!
쯧, 눈이 멀게 만드는 리듬.
위 내용은 흥미로운 JavaScript 질문입니다: 통계 바이너리 내용에 대한 자세한 내용은 PHP 중국어 웹사이트(www.php.cn)를 참고하세요!