Reverse bits of a given 32 bits unsigned integer.
Note:
Note that in some languages, such as Java, there is no unsigned integer type. In this case, both input and output will be given as a signed integer type. They should not affect your implementation, as the integer's internal binary representation is the same, whether it is signed or unsigned.
In Java, the compiler represents the signed integers using 2's complement notation. Therefore, in Example 2 above, the input represents the signed integer -3 and the output represents the signed integer -1073741825.
Input: n = 00000010100101000001111010011100
Output: 964176192 (00111001011110000010100101000000)
Explanation: The input binary string 00000010100101000001111010011100
represents the unsigned integer 43261596, so return 964176192
which its binary representation is 00111001011110000010100101000000.
Input: n = 11111111111111111111111111111101
Output: 3221225471 (10111111111111111111111111111111)
Explanation: The input binary string 11111111111111111111111111111101
represents the unsigned integer 4294967293, so return 3221225471
which its binary representation is 10111111111111111111111111111111.
/**
* @param {number} n - a positive integer
* @return {number} - a positive integer
*/
const reverseBits = function(n) {
//convert the number to base2 then stringify, split, and reverse
let reversedArray = n.toString(2).split("").reverse()
//the converted number may not be 32 digits so pad the end
while(reversedArray.length <32){ reversedArray.push('0')}
//join the string, then convert to Integer from base 2
return parseInt(reversedArray.join(""),2)
};
문자열 인자를 구문분석하여 특정 진수의 정수를 반환한다.
parseInt(string, radix);
분석할 값. 만약 string이 문자열이 아니면 문자열로 변환(ToString 추상 연산을 사용)합니다. 문자열의 선행 공백은 무시합니다.
string이 표현하는 정수를 나타내는 2와 36 사이의 진수(수의 진법 체계에 기준이 되는 값). 주의하세요-기본값이 10이 아닙니다!
여기서 두번째 매개변수를 사용해 2진수로 형변환할 수 있다.
그런데, 여기서
while(reversedArray.length <32){ reversedArray.push('0')}
를 더 간단하게 바꿀 수 있는 새로운 메서드가 있다.
padStart 메서드를 사용하면 while문을 사용해 조건을 만족할 때까지 0을 푸시한 다음 뒤집는 것이 아니라, 문자열을 뒤집은 다음에 매개변수를 사용해 원하는 길이를 만족할 때까지 문자열 앞쪽에 특정 문자열을 넣어줄 수 있다.
문자열의 시작을 다른 문자열로 채워, 주어진 길이를 만족하는 새로운 문자열을 반환한다.
const str1 = '5';
console.log(str1.padStart(2, '0'));
// expected output: "05"
문자열의 길이가 2가 될때까지 0을 앞쪽에 채워넣는다.
str.padStart(targetLength [, padString])
목표 문자열 길이. 현재 문자열의 길이보다 작다면 채워넣지 않고 그대로 반환.
현재 문자열에 채워넣을 다른 문자열. 문자열이 너무 길어 목표 문자열 길이를 초과한다면 좌측 일부를 잘라서 넣음. 기본값은 " ". (U+0020)