뒤집기 비트 문제

이 문제는 솔버에게 32비트 부호 없는 정수의 뒤집힌 비트를 인쇄하도록 요청합니다.
자세하게는 정수가 제공됩니다.

9 (base 10)



32비트 부호 없는 10진 정수 결과를 반환하도록 함수를 작성해야 합니다.

4294967286 (base 10)



모든 코드는 Javascript로 작성되지만 이 문제를 해결하기 위해 모든 언어를 사용할 수 있습니다.

9에서 4294967286으로 가는 방법은 무엇입니까?
  • 먼저 입력을 받아서 toString() 함수를 사용하여 문자열로 변환합니다.

  •  let s=n.toString(2);
    


  • 새 변수를 초기화하고 32-(문자열 길이)에 할당

  •  let temp=32-s.length;
    


    temp가 32-s.length와 같은 이유 - 변수 s는 이진 형식으로 숫자를 저장합니다. 즉, n=9는 십진수이고 s는 이진수로 "1001"을 저장합니다. 32비트 정수를 생성하여 s의 나머지 비트를 추가하기 위해 주어진 공식에 임시를 할당합니다.
  • 새 변수를 초기화하고 빈 문자열에 할당

  • let temp_s="";
    for(let i=0;i<temp;i++)
        temp_s+="0";
    


    temp_s는 temp 길이의 빈 문자열에 0을 추가합니다.

  • res_s는 0으로 가득 찬 문자열과 이진 형식의 변환된 숫자 문자열을 보유합니다.

  • let res_s=temp_s+s; 
    


    res_s=00000000000000000000000000001001



  • flip_s는 1이 0으로 변환되고 0이 1로 변환되므로 뒤집힌 문자열을 저장합니다.

  • let flip_s="";
    


  • 문자열 res_s를 순회하기 위해 for of 루프를 사용합니다.

  • for(let i of res_s) {
            if(i==="0")
                flip_s+="1";
            else if(i==="1")
                flip_s+="0";
        }
    


    여기서 문자열의 모든 요소는 0과 1에 대해 검사되고 각각 1과 0에 할당됩니다.

    flip_s=11111111111111111111111111110110


  • 콘솔/프롬프트 화면에 주어진 표현의 값을 출력

  • console.log( parseInt(flip_s, 2));
    


    여기서 parseInt() 메서드는 flip_s 변수를 십진수 형식으로 변환하고 결과를 다음과 같이 출력합니다.

    4294967286



    이 문제는 HackerRank의 1개월 면접 준비 키트의 일부입니다.

    좋은 웹페이지 즐겨찾기