문제
Assignment name : reverse_bits
Expected files : reverse_bits.c
Allowed functions:
--------------------------------------------------------------------------------
Write a function that takes a byte, reverses it, bit by bit (like the
example) and returns the result.
Your function must be declared as follows:
unsigned char reverse_bits(unsigned char octet);
Example:
1 byte
_____________
0010 0110
||
\/
0110 0100
공략법
총 8번 while문을 반복한다. (i = 8)
while문으로 다음과 같이 시도한다.
- res에 2를 곱한다.
- res에 octet % 2를 더한다
octet /= 2i -= 1
res에 2를 곱해 res << 1 과 같은 효과를 만든다.
- 처음 시점에는 res가 0이라 아무 의미가 없다.
octet % 2를 하면 octet을 이진수로 바꿨을 때 마지막 자리수가 튀어나온다.
해당 마지막 자리수를 결과값 res에 더해준다.
octet를 2로 나누어 octet >> 1 과 같은 효과를 만든다.
res에 2를 곱해 res << 1 과 같은 효과를 만든다.
(다시 재반복)