검색어 입력폼

bit operation 을 이용한 parity disc 구현

저작시기 2007.11 |등록일 2009.06.07 워드파일MS 워드 (doc) | 21페이지 | 가격 3,000원

소개글

bit operation 을 이용한 parity disc 구현

목차

1. 문제 정의
2. 문제 해결 방법(알고리즘)
3. 성능 분석
4. 소스 코드
5. 결론
6. 느낀점
7. 참고자료

본문내용

1. 문제 정의
임의의 4개의 Integer 값을 입력 받아서, 32-bit 의 2진수 값으로 변경하여 4개의 가상 디스크에 Bit 단위로 저장한다. 그리고 5번째 디스크에 패리티를 작성하여 출력을 한다. 또한 작성한 프로그램을 사용하여, 패리티 오류 검출 시스템의 성능 평가를 수행한다. 이 문제를 해결함으로써, Bit Operation 에 대한 개념을 확실하게 파악하도록 한다.

2. 문제 해결 방법(알고리즘)
(1) % 연산자(나머지 연산자)를 이용한 2진수 변환
% 연산자(나머지 연산자)를 이용하여 2진수로 변환이 가능하다. A라는 수를 32bit의 2진수로 변환한다고 하자. A%2 를 하면, 나머지 값이 계산된다. 1회 연산한 결과는 2진수 변환의 첫 bit 가 된다. 나머지를 구하고 난 후 A/=2(A=A/2) 를 사용하여 그 다음 계산을 위해 A를 변경하여 몫을 저장한다. 이런 방법으로 32의 크기를 갖는 Integer 배열에 32번째 방부터 시작해서 1번째 방까지 나머지를 저장하게 되면 2진수 변환이 된다.

예를 들어 22 를 2진수로 변환하여 보자.

* 2진수 변환 값을 저장하는 배열의 이름을 bin 이라고 하자.

(2) 2차원 배열을 이용한 열의 합(sum of bits)
Parity Disk 를 사용하기 위해서는 sum of bits 를 이용하여야 한다. 이 때, 입력받은 4개의 Integer 의 2진수 변환 값을 배열에 저장하는데, 2차원 배열을 이용하여 각 열별로 합을 구해주게 된다. 따라서, for 문 반복을 1번만 32까지 하면 된다. 이 sum of bits 가 짝수인지 홀수인지를 구분하여 Parity Values 를 만들게 된다.
문제에 정의된 Parity Disk 는 짝수 Parity Bit 를 사용하므로, Sum of bits 가 짝수이면 0이 되고, 홀수이면 1이 된다.

(3) srand, rand 함수를 이용한 Parity 성능분석
Parity 성능분석을 위하여, 주어진 4개의 Integer 의 2진수 변환 값을 무작위로 조작하게 된다. 일단 첫 무작위 값인, random_temp 변수에는 rand()%32 를 이용하여, 어떤 위치의 bit 를 조작할 것인지 선택한다. rand()%32 는 0에서 31까지의 무작위 값을 구해준다. 그리고 random_bin 변수에는 rand()%2 를 이용한다. 즉, rand()%2 함수는, 0 혹은 1 의 무작위 값을 구해주는데, bit 임의조작에 있어서 변경이 될 수도, 안 될 수도 있는 것이다.
여기서 임의조작 되는 bit 의 개수를 1개부터 32개까지 해 보았다. 그 후에 임의조작 전과 후의 Parity Values 를 비교하여 동일한 개수가 몇 개인지를 구하였다. 구한 값이 바로 Parity 성능이 되는 것이다. 식으로 나타내면 아래와 같다.

참고 자료

없음
다운로드 맨위로