1. 비트 &연산자

우리는 이전에 모든 데이터가 이진 표현으로 메모리에 저장된다고 말했습니다. 꽤 오래 전에 프로그래머들은 이진수로 작업하는 흥미로운 방법을 많이 생각해 냈습니다. 예를 들어 Java에는 (AND), , (NOT 또는 보수) 및 (XOR - 배타적 논리합)과 같이 숫자의 이진 표현 비트에서 작동하는 논리 연산자가 있습니다 .&| (OR)~^

a & b
비트 &(AND) 연산자

이 연산자는 논리 &(AND) 연산자와 매우 유사하지만 두 개가 아닌 단일 앰퍼샌드로 표시됩니다.

그리고 개별 비트에 적용됩니다. 각 피연산자는 비트 배열로 취급되며 i결과의 th 비트는 i두 피연산자의 각각의 th 비트를 사용하여 계산됩니다.

결과의 첫 번째 비트는 숫자의 첫 번째 비트 a 와 숫자의 첫 번째 비트 b, 두 번째 비트 — 숫자의 두 번째 비트 a 와 숫자의 두 번째 비트 b등을 기반으로 계산됩니다.

(AND) 연산자 는 "숫자의 해당 비트가 1과 같을 &때만 결과 비트가 1과 같음"을 의미 합니다 .aANDb

1 & 1 = 1
1 & 0 = 0
0 & 1 = 0
0 & 0 = 0

예:

결과
0b0011 & 0b1010
0b0010
0b1111 & 0b0000
0b0000
0b1010 & 0b0101
0b0000
0b1111 & 0b1010
0b1010

2. 비트 |연산자

이 연산자는 논리 |(OR) 연산자와 매우 유사하지만 두 개가 아닌 하나의 수직선으로 표시됩니다.

a | b

그리고 개별 비트에 적용됩니다. 각 피연산자는 비트 배열로 취급되며 결과의 i번째 비트는 두 피연산자의 i번째 비트를 사용하여 계산됩니다.

비트 |(OR) 연산자는 "숫자의 해당 비트가 1과 같으면 결과 비트가 a1이고 OR숫자의 해당 비트가 b1과 같다"는 의미입니다.

1 | 1 = 1
1 | 0 = 1
0 | 1 = 1
0 | 0 = 0

예:

결과
0b0011 | 0b1010
0b1011
0b1110 | 0b0000
0b1110
0b1010 | 0b0101
0b1111
0b1111 | 0b1010
0b1111

두 숫자의 해당 비트(동일한 위치에 있는 비트)가 0인 경우에만 결과의 해당 비트가 0이 됩니다.



3. 비트 ^(XOR 또는 "배타적 OR") 연산자

배타적 또는XOR 라고도 발음되는 연산자는 기호 로 표시됩니다 . 키보드로 입력하려면 shift + 6 (영어 키보드 레이아웃)을 누릅니다.^

a ^ b

OR이 연산자는 이름이 비슷하다는 점을 포함하여 연산자 와 다소 유사합니다 .XOR

비트 ^(XOR) 연산자는 "숫자의 해당 비트가 1과 같으면 결과 비트는 a1과 같고 OR숫자의 해당 비트는 b1과 같지만 동시에 둘 다는 아님"을 의미합니다.

1 ^ 1 = 0
1 ^ 0 = 1
0 ^ 1 = 1
0 ^ 0 = 0

예:

결과
0b0011 ^ 0b1010
0b1001
0b1110 ^ 0b0000
0b1110
0b1010 ^ 0b0101
0b1111
0b1111 ^ 0b1010
0b0101

두 숫자의 해당 비트(동일한 위치에 있는 비트)가 다른 경우에만 결과의 해당 비트가 1이 됩니다 . 비트가 같으면 결과 비트는 0 입니다 .



4. 비트 ~(NOT, COMPLEMENT) 연산자

나는 당신이 이미 그것이 무엇인지 짐작할 수 있다고 생각합니다. 이 연산자는 논리(NOT) 연산자와 매우 유사 하지만 느낌표 가 아닌 물결표 !로 표시됩니다 .

~a

이것은 단항 연산자입니다. 즉, 두 개가 아닌 단일 숫자에 적용됩니다. 이 단일 피연산자 앞에 나타납니다.

비트 ~연산자는 "숫자의 해당 비트가 0이면 결과 비트는 1 a이고 숫자의 해당 비트가 a1이면 0"을 의미합니다.

~1 = 0
~0 = 1

예:

결과
~0b0011
0b1100
~0b0000
0b1111
~0b0101
0b1010
~0b1111
0b0000

1이 연산자는 단순히 to 인 비트 0와 to인 비트를 0변경 합니다 1.