검색어 입력폼

[A+]비트조작(bit operation, 9문제)

저작시기 2009.10 |등록일 2010.04.03 한글파일한글 (hwp) | 13페이지 | 가격 1,800원

소개글

A+ 받은 리포트이다. 상세한 주석설명으로 비트연산에 대해서 잘 모르는 사람도
잘 이해할 수 있을것이다.

목차

●문제 분석
●문제 해결 방법 설명
●소스코드
●결과화면
●느낀 점 및 소감

본문내용

●문제 분석
bits.c 파일에는 15가지의 프로그래밍 퍼즐의 뼈대(skeleton)가 있다. 이번 과제는 각 선언된 함수에 straightline code(i.e.,반복문이나 조건문이 없는 코드)이면서 제한된 수의 C 산술 연산자와 논리 연산자를 사용하여 코드를 완성하는 것이다. 제한된 논리적인 연산자는 다음 여덟 가지이다.

! ~ & ^ | + << >>

이 리스트에서 불필요한 몇 가지 함수는 제외한다. 또한 8비트 보다 긴 상수를 사용하지 못한다.
bits.c의 주석을 보면 제약사항에 대한 설명과 요구하는 코딩 스타일 방법이 있다.

●문제 해결 방법 설명
1.int bitAnd(int x, int y)

return ~(~x | ~y);
//bitAnd 함수는 간단하게 드모르간의법칙을 사용하면 구할수 있다.
//드모르간의 법칙에 따르면 x & y = ~(~x | ~y) 이다.

2.int bitMask(int highbit, int lowbit)
int mask = ((0xFFFFFFFF << (highbit))<<1) ^ (0xFFFFFFFF << (lowbit));
//먼저 111...111 을 highbit+1 만큼 왼쪽 시프트 시킨다.(칸수를 맞추기 위해)
//그다음 111...111 을 lowbit 만큼 왼쪽 시프트 시킨다.

int mask2 = 0xFFFFFFFF ^ ((highbit + (~lowbit +1)) >> 31);
//그런데, lowbit 가 highbit 보다 클경우 무조건 0을 출력 해야 한다.
//lowbit와 highbit 를 비교하기 위해서 (~lowbit +1)로 -lowbit를 구현하고,
//두 비트를 더한 값을 오른쪽으로 시프트 시킨다.
//만약 lowbit 가 더 커서 더한 값의 최상위 비트가 1 이면 0xFF와 XOR 해서
//무조건 0이 나온다.
다운로드 맨위로