-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathreverseBits.cpp
100 lines (61 loc) · 1.25 KB
/
reverseBits.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#include<bits/stdc++.h>
using namespace std;
#define ui unsigned int
ui binaryToDecimal(string b){
int r,j=1;
ui d=0;
for(int i=b.length()-1;i>=0;i--){
r=b[i]-48;
d=d+r*j;
j=j*2;
}
return d;
}
string decimalToBinary(ui n){
string bin="00000000000000000000000000000000";
ui j=31;
while(n){
ui r = n%2;
if(r==0)
bin[j]='0';
else
bin[j]='1';
j--;
n=n/2;
}
return bin;
}
ui reverse(ui n){
if(n==0)
return 0;
//string bin = "00000000000000000000000000000000";
string bin = decimalToBinary(n);
int l = 0,h = 31;
while(l<=h){
char t = bin[l];
bin[l]=bin[h];
bin[h]=t;
l++;
h--;
}
ui ans = binaryToDecimal(bin);
return ans;
}
int main(){
//string bin = "00000000000000000000000000000000";
// cout<<bin<<endl;
// string b = decimalToBinary(3);
cout<<reverse(3)<<endl;
}
/*
Example 1:
x = 0,
00000000000000000000000000000000
=> 00000000000000000000000000000000
ans : 0
Example 2:
x = 3,
00000000000000000000000000000011
=> 11000000000000000000000000000000
ans : 3221225472
*/