본문 바로가기
프로그래밍 _공부자료./C++ 공부

OR연산을 활용한 비트 연산 배열에 담아 출력하기!

by 대구부자 2019. 11. 24.
반응형

 

 

 

1)map_1 과 map_2의 배열에 각각의 상수 값을 입력한다..

2) map_1과 map _2의 상수 값을 각각 XOR 연산 을 한다.

=> 여기서 중요한 사실은 위의 15line에서 볼수 있듯이 or 연산 한 값에 & 연산 한 값을 빼면 XOR 값을 얻을수 있다.

저 또한 몰랐던 사실 이고 , 이글을 보고 모르셧던 분들은 알고 가시면 좋을거 같습니다.!

 

 

3)XOR 계산값을 담을 Temp[5] 변수가 필요하다.

4)XOR 한 값을 비트연산을 하여 2차배열 result[5][5] 값을 저장 한다.

=> 비트 연산의 결과 값을 저장 하려면 마스크가 필요 한데, Mask = 1 로지정을 한다.

&연산의 경우 곱해서 1이 나와야 1로 표기가 되기 때문이다. ( 1의 2진수 값이 0001) 이므로 계산하기 용이하다 .

 

5)result[5][5] 2차배열에 비트단위의 값을 저장한다.

 

=> Mask 는 준비 하였고 , 이젠 XOR에 담긴 상수 값과 mask를 비교하여 결과값을 얻을 차례다.

XOR 의 계산 값 과 Mask를 &연산 한다.

하지만 한바이트 씩 끊어 내야 하므로, XOR의 결과 값은 마스크와 비트연산 후 1칸씩 쉬프트 연산으로

1칸씩 이동 하여야 한다.

 

여기서 중요한점은 마스크느 00001 로서 항상 고정값으로 있어야 한다 왜냐하면 항상 끝자리를 &연산으로 같으면 1 아니면 0이 나오게 해야 하므로 ​ 따라서  &연산 한번 하고 난후 제일 끝자리는 필요가 없어지게 되며로 >>1 오른쪽으로 한칸 밀어 준다!

 

 

 

EX) 10111 의 이진수로 표기된 값의 비트 단위로 받을려면

>>1 오른쪽 방향으로 한칸 이동하여 1맨 앞의 1을 버려 버리고 0111 만 남게 되는 원리이다.

풀이과정이 이해가 잘 안가시는분들 댓글로 달아 주시면

알고 있는 선에서 최대한 설명 드리겠습니다.

 

 

반응형

댓글