programming/알고스팟
알고스팟 - 튜토리얼 ENDIANS
Ryuuu
2020. 5. 14. 19:43
튜토리얼인데 생각보다 어려웠다....
연등때 해서 그렇겠지...? 그래야돼......
2진수로 바꾼다음 8비트로 쪼개서 push 한 뒤 pop 했다.
하고보니 이렇게까지 해야했나 싶다....
#include
#include
#include
using namespace std;
void little(unsigned int big);
int main(){
int n;
int i;
unsigned int input;
vector arr(10002);
cin >> n;
for(i=0;i<n;i++){
cin >> input;
arr[i] = input;
}
for(i=0;i<n;i++){
little(arr[i]);
}
return 0;
}
void little(unsigned int big) {
unsigned int input = big;
string s="";
int i;
int len = 0;
vector addr;
string str="";
string big_end="";
unsigned int result = 0;
unsigned int origin = 1;
while(input > 1){
if(input % 2 == 0){
s+='0';
}
else {
s+='1'; //2진수 변환
}
input/=2;
}
s+='1';
len = s.length();
for(i=0;i<32-len;i++){
s+='0';
}
reverse(s.begin(),s.end());
for(i=0;i<32;i++){
str += s[i];
if (i % 8 ==7){
addr.push_back(str);
str = "";
}
}
for(i=0;i<4;i++){
s = addr.back();
big_end += s;
addr.pop_back();
}
reverse(big_end.begin(),big_end.end());
for(i=0;i<32;i++){
if(big_end[i] =='1'){
result += origin;
}
origin *=2;
}
cout << result << endl;
}