n을 일의 자리수부터 1 &로 비트 연산을 한다.1이라면 1을 0이라면 0을 StringBuilder에 차례대로 append 해준다. 그러면 순서가 뒤집히게 되는데, 32자리 수이기 때문에 32보다 길이가 짧다면 나머지를 0으로 채워준뒤, 10진법으로 바꿔주면 정답
public class Solution {
// you need treat n as an unsigned value
public int reverseBits(int n) {
StringBuilder sb = new StringBuilder();
while(n != 0){
if((n & 1) == 1){
sb.append(1);
}else{
sb.append(0);
}
n >>>= 1;
}
String textNum = sb.toString();
if(sb.length() < 32){
for(int i = 0; i < 32 - sb.length(); i++){
textNum += "0";
}
}
return (int) Long.parseLong(textNum,2);
}
}