비트 연산자는 일반적으로 이용되는건 아니고, 패리티 체크나, 데이터가 귀한 과거 시대의 유물로 종종 이용되긴하다.
예시 | 이름 | 결과 |
---|---|---|
$a & $b | And | $a and $b 모두 1(참)일 경우 1 |
$a | $b | Or (inclusive or) | $a and $b 둘중 하나 이상 1(참)일 경우 1 |
$a ^ $b | Xor (exclusive or) | $a 와 $b 다르면 1, 같으면 0 |
~ $a | Not | $a 값이 0이면 1, 1이면 0 |
$a << $b | Shift left | $a 값을 $b 만큼 좌로 쉬프팅 |
$a >> $b | Shift right | $a 값을 $b만큼 우로 쉬프팅 |
(예) Bitwise AND
0 & 5 를 했을 경우, ( 0 = 0000) = ( 0 = 0000) & ( 5 = 0101) 1 & 5 를 했을 경우, ( 1 = 0001) = ( 1 = 0001) & ( 5 = 0101) 2 & 5 를 했을 경우, ( 0 = 0000) = ( 2 = 0010) & ( 5 = 0101) 4 & 5 를 했을 경우, ( 4 = 0100) = ( 4 = 0100) & ( 5 = 0101) 8 & 5 를 했을 경우, ( 0 = 0000) = ( 8 = 1000) & ( 5 = 0101) (예)Bitwise Inclusive OR 0 & 5 를 했을 경우, ( 5 = 0101) = ( 0 = 0000) | ( 5 = 0101) 1 & 5 를 했을 경우, ( 5 = 0101) = ( 1 = 0001) | ( 5 = 0101) 2 & 5 를 했을 경우, ( 7 = 0111) = ( 2 = 0010) | ( 5 = 0101) 4 & 5 를 했을 경우, ( 5 = 0101) = ( 4 = 0100) | ( 5 = 0101) 8 & 5 를 했을 경우, (13 = 1101) = ( 8 = 1000) | ( 5 = 0101) (예) Bitwise Exclusive OR (XOR) 0 & 5 를 했을 경우, ( 5 = 0101) = ( 0 = 0000) ^ ( 5 = 0101) 1 & 5 를 했을 경우, ( 4 = 0100) = ( 1 = 0001) ^ ( 5 = 0101) 2 & 5 를 했을 경우, ( 7 = 0111) = ( 2 = 0010) ^ ( 5 = 0101) 4 & 5 를 했을 경우, ( 1 = 0001) = ( 4 = 0100) ^ ( 5 = 0101) 8 & 5 를 했을 경우, (13 = 1101) = ( 8 = 1000) ^ ( 5 = 0101)
연산자의 우선순위가 있어 외도치 않은 결과값이 나올수 있다.
식 | 결과 | |
---|---|---|
$a & $b == true | $b == true 인지 판단한 뒤, $a 와 BitAND 연산을 한다. | |
($a | $b) == true | $a | $b 를 BitOr 연산한 뒤, 그 값이 true인지 확인한다. |
댓글 없음:
댓글 쓰기