반응형
http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&code=1419&sca=99
#include <stdio.h>
/*
0001 0010 0011 0100 0101 0110 0111 1000 (Big Endian)
1 2 3 4 5 6 7 8
0111 1000 0101 0110 0011 0100 0001 0010 (Little Endian)
7 8 5 6 3 4 1 2
8비트씩 끊어서 표현함
*/
/*
Horner's method
a ra
1204 0
120 4
12 40
1 402
0 4021
while (a) {
ra = ra * 10 + a % 10;
a /= 10;
}
*/
typedef unsigned int u32;
u32 input, output;
u32 array[4];
//Horner's method
u32 Horner(u32 a, u32 ra = 0) {
while (a) {
ra = (ra << 8) | (a & 0xFF);
a >>= 8;
}
return ra;
}
//Union
inline void swap(char& a, char& b) {
char t = a; a = b; b = t;
}
u32 convertEndian(u32 a) {
union { u32 k; char chr[4]; };//익명 공용체
k = a;
swap(chr[0], chr[3]);
swap(chr[1], chr[2]);
}
//Bit reverse(만약 32를 완전히 뒤집어야 한다면?) 분할정복
u32 bitReverse(u32 k) {
k = (k << 16) | (k >> 16); //16개씩 바꾸고
k = (k << 8 & 0xFF00FF00) | (k >> 8 & 0x00FF00FF); //16개 안에서 8개씩 바꾸고
k = (k << 4 & 0xF0F0F0F0) | (k >> 4 & 0x0F0F0F0F); //8개 안에서 4개씩
k = (k << 2 & 0xCCCCCCCC) | (k >> 2 & 0x33333333); //4개 안에서 2개씩
k = (k << 1 & 0xAAAAAAAA) | (k >> 1 & 0x55555555); //2개 안에서 1개씩
}
int main() {
scanf("%d", &input);
for (int i = 0; i < 4; i++) {
array[i] = (input >> (i * 8)) & 0xFF;
}
for (int i = 0; i < 4; i++) {
output += (array[i] << (3 - i) * 8);
}
printf("%u\n", output);
return 0;
}
반응형
'프로그래밍 알고리즘' 카테고리의 다른 글
[정올 1462] 보물섬 (0) | 2023.01.05 |
---|---|
[정올 1457] 영역 구하기 (0) | 2023.01.05 |
[정올 1411] 두 줄로 타일 깔기 (0) | 2023.01.03 |
[정올 1374] 긴 자리 덧셈 뺄셈 (0) | 2023.01.03 |
[정올 1357] 합이 0이 되는 4개의 숫자들 (0) | 2023.01.03 |