열렬히.뛰기

reverse_bits

école 42 > exam02 > exam02 : part2 > reverse_bits

문제

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문으로 다음과 같이 시도한다.

  1. res에 2를 곱한다.
  2. res에 octet % 2를 더한다
  3. octet /= 2
  4. i -= 1

res에 2를 곱해 res << 1 과 같은 효과를 만든다.

  • 처음 시점에는 res가 0이라 아무 의미가 없다.

octet % 2를 하면 octet을 이진수로 바꿨을 때 마지막 자리수가 튀어나온다.

해당 마지막 자리수를 결과값 res에 더해준다.

octet를 2로 나누어 octet >> 1 과 같은 효과를 만든다.


res에 2를 곱해 res << 1 과 같은 효과를 만든다.

(다시 재반복)