"논리연산자"의 두 판 사이의 차이
(→&&(AND)) |
(→개요) |
||
(사용자 2명의 중간 판 25개는 보이지 않습니다) | |||
1번째 줄: | 1번째 줄: | ||
− | '''논리 연산'''(logical operation, logical connective) 혹은 불 연산(boolean operation)은 참, 거짓 두 가지 | + | '''논리 연산'''(logical operation, logical connective) 혹은 '''불 연산'''(boolean operation)은 진리값으로 불리는 참, 거짓 두 가지 원소만 존재하는 집합(환으로 불림)에서의 연산이다. [[논리합]](OR, ∨), [[논리곱]](AND, ∧), [[논리부정]](NOT, ~/¬), 배타적 논리합(XOR, ⊕), 명제, 동치 등이 있다. 수학의 [[논리학]]이나 [[프로그래밍 언어]]에서 사용한다. 프로그래밍 언어에서는 비트연산이라고도 한다. |
+ | ==개요== | ||
+ | [[논리 연산자]]는 두 개의 논리 값을 연산하여 참 또는 거짓을 결과로 얻는 연산자로 '!(not), &&(and), ∥(or)'이 있다. 피연산자로 boolean형 값을 결과로 하는 조건식만을 허용하며 '&&'가 '∥' 연산보다 우선순위가 높으므로 한 조건식에 '&&'와 '∥'가 함께 사용될 때는 괄호를 사용하여 우선순위를 명확하게 해주어야 한다. '&&'는 AND 연산자로 피연산자 양쪽 모두 참(True)이면 참이다. '∥'는 OR 연산자로 피연산자 중 어느 한 쪽이 참(True)이면 참이다. 같은 조건식이라도 피연산자의 위치에 따라서 연산속도가 달라질 수 있으며, '&&'의 경우에는 연산결과가 거짓(False)일 확률이 높은 피연산자를 연산자의 좌측에 놓아야 더 빠른 연산결과를 얻을 수 있다.<ref name="논리 연산자">〈[https://programmer-seva.tistory.com/9 논리 연산자 및 비트 연산자]〉, 《세바의 코딩교실》, 2016-01-28</ref> | ||
− | == | + | :{|class=wikitable width=700 style="background-color:white" |
+ | |+논리 연산자 | ||
+ | !align=center style="background-color:ashgray"|x | ||
+ | !align=center style="background-color:ashgray"|y | ||
+ | !align=center style="background-color:ashgray"|x∥y | ||
+ | !align=center style="background-color:ashgray"|x && y | ||
+ | |- | ||
+ | |align=center|true | ||
+ | |align=center|true | ||
+ | |align=center|true | ||
+ | |align=center|true | ||
+ | |- | ||
+ | |align=center|true | ||
+ | |align=center|false | ||
+ | |align=center|true | ||
+ | |align=center|false | ||
+ | |- | ||
+ | |align=center|false | ||
+ | |align=center|true | ||
+ | |align=center|true | ||
+ | |align=center|false | ||
+ | |- | ||
+ | |align=center|false | ||
+ | |align=center|false | ||
+ | |align=center|false | ||
+ | |align=center|false | ||
+ | |} | ||
+ | 논리식을 구성하는 요소이며 부정이나 논리곱, 논리합 등을 들 수 있다. 즉, 하나 또는 그 이상의 오퍼랜드에 적용되는 논리 기능을 갖는 단어나 기호. 부정이라 부르는 단항 연산에서는 오퍼랜드의 앞에 오지만 2항 연산에서는 오퍼랜드 중간에 온다. | ||
+ | <ref name="논리연산자란">〈[https://terms.naver.com/entry.nhn?docId=1603652&cid=50372&categoryId=50372 논리연산자란]〉, 《네이버 지식백과》</ref><br> | ||
==등장배경/역사== | ==등장배경/역사== | ||
+ | 불 대수(Boolean algebra)는 19세기 중반 영국의 수학자 조지 불(George Boole, 1815년 11월 2일 ~ 1864년 12월 8일)이 고안하고 형식화한 대수 체계를 의미한다.<ref name="논리연산자의 역사">〈[https://namu.wiki/w/%EB%85%BC%EB%A6%AC%20%EC%97%B0%EC%82%B0#fn-1 논리연산자의 역사]〉, 《나무위키》</ref><br> | ||
+ | 논리 연산(logical operation, logical connective)으로도 불린다. 수리 논리학이나 컴퓨터공학과에서, 두 개의 상태인 참(1, T, True)과 거짓(0, F, False)으로 불 연산(Boolean expression)이라 한다. 불 대수의 출현 이후로 논리학은 기호논리학의 성향이 강해지기 시작한다. | ||
+ | |||
+ | 프로그래밍에서는 조건에 의한 분기나 반복을 만드는 데 이용되고, 디지털 논리 회로를 배울 때 유용하게 사용된다. 디지털 회로의 신호는 0과 1로만 구성되어 있기 때문이다. 전자계통에선 논리 연산을 하는 소자를 게이트(Gate)라고 하며 트랜지스터 여러 개를 조합해서 만들 수 있다. | ||
+ | |||
+ | 이산수학에서는 속(Lattice) 중 Complementary Lattice이며 Distributive Lattice인 Lattice를 불 속(Boolean Lattice)이라 하며 이를 대수(Algebra)식으로 나타낸 것을 불 대수(Boolean Algebra)라고 한다. 불 속의 원소 개수는 해당 원자(atom) 개수 n에 대해 2n개이다. 즉, 불 속의 원소 개수는 2의 제곱수대로 올라간다고 보면 된다. | ||
==특징== | ==특징== | ||
+ | === AND (&&) === | ||
+ | &&는 좌항과 우항의 값이 모두 참(true)일 때 참이 된다. And라고 읽는다. 다음 예제를 보자. 결과는 1이다. and의 좌우항이 모두 true인 것은 첫 번째 조건문 밖에 없기 | ||
+ | 때문이다. | ||
− | + | if (true && true) { | |
− | + | System.out.println(1); | |
− | + | } | |
− | + | ||
+ | if (true && false) { | ||
+ | System.out.println(2); | ||
+ | } | ||
+ | |||
+ | if (false && true) { | ||
+ | System.out.println(3); | ||
+ | } | ||
+ | |||
+ | if (false && false) { | ||
+ | System.out.println(4); | ||
+ | } | ||
− | + | * 1 출력<br><br> | |
− | + | === OR (||) === | |
− | + | ||(or)는 좌우항 중에 하나라도 true라면 전체가 true가 되는 논리 연산자다. 다음 예를 보자. 결과는 1,2,3이 출력된다. 마지막 조건문의 or는 좌항과 우항이 모두 false이기 때문에 false가 된다. | |
− | |||
− | + | if (true || true) { | |
− | + | System.out.println(1); | |
− | + | } | |
− | if( true | + | |
− | if( false | + | if (true || false) { |
− | + | System.out.println(2); | |
− | if( false | + | } |
+ | |||
+ | if (false || true) { | ||
+ | System.out.println(3); | ||
+ | } | ||
+ | |||
+ | if (false || false) { | ||
+ | System.out.println(4); | ||
+ | } | ||
− | === | + | * 1, 2, 3 출력<br><br> |
− | + | === NOT (!) === | |
− | + | !는 부정의 의미로 not이라고 읽는다. Boolean의 값을 역전시키는 역할을 한다. true에 !를 붙으면 false가 되고 false에 !을 붙이면 true가 된다. <ref name="논리연산자">〈[https://opentutorials.org/course/1223/5365 논리연산자 java 코드]〉, 《생활코딩》</ref> | |
+ | if (!true) { | ||
+ | System.out.println(1); | ||
+ | } | ||
+ | if (!false) { | ||
+ | System.out.println(2); | ||
+ | } | ||
+ | * 2 출력<br><br> | ||
{{각주}} | {{각주}} | ||
==참고자료== | ==참고자료== | ||
+ | * 〈[https://terms.naver.com/entry.nhn?docId=1603652&cid=50372&categoryId=50372 네이버 지식백과]〉 | ||
+ | * 〈[https://namu.wiki/w/%EB%85%BC%EB%A6%AC%20%EC%97%B0%EC%82%B0#fn-1 나무위키 : 논리연산]〉 | ||
+ | * 〈[https://ko.javascript.info/logical-operators js : 논리연산자]〉, 2020년 1월 8일 | ||
+ | * 〈[http://tcpschool.com/php/php_operator_logic TCPSCHOOL : 논리연산자]〉 | ||
+ | * 〈[https://ko.wikipedia.org/wiki/%ED%95%AD%EB%93%B1%EC%9B%90 위키백과 : 항등원]〉 | ||
+ | * 〈[https://ko.wikipedia.org/wiki/%EC%9D%B4%EC%A4%91%EB%B6%80%EC%A0%95 위키백과 : 이중부정]〉 | ||
+ | * 〈[https://opentutorials.org/course/1223/5365 생활코딩 : 논리연산자]〉 | ||
==같이 보기== | ==같이 보기== | ||
+ | * [[논리연산]] | ||
+ | * [[연산자]] | ||
+ | * [[대입연산자]] | ||
+ | * [[시프트연산자]] | ||
+ | * [[증감연산자]] | ||
+ | * [[비트연산자]] | ||
+ | |||
+ | {{프로그래밍|검토 필요}} |
2020년 8월 10일 (월) 15:19 기준 최신판
논리 연산(logical operation, logical connective) 혹은 불 연산(boolean operation)은 진리값으로 불리는 참, 거짓 두 가지 원소만 존재하는 집합(환으로 불림)에서의 연산이다. 논리합(OR, ∨), 논리곱(AND, ∧), 논리부정(NOT, ~/¬), 배타적 논리합(XOR, ⊕), 명제, 동치 등이 있다. 수학의 논리학이나 프로그래밍 언어에서 사용한다. 프로그래밍 언어에서는 비트연산이라고도 한다.
개요[편집]
논리 연산자는 두 개의 논리 값을 연산하여 참 또는 거짓을 결과로 얻는 연산자로 '!(not), &&(and), ∥(or)'이 있다. 피연산자로 boolean형 값을 결과로 하는 조건식만을 허용하며 '&&'가 '∥' 연산보다 우선순위가 높으므로 한 조건식에 '&&'와 '∥'가 함께 사용될 때는 괄호를 사용하여 우선순위를 명확하게 해주어야 한다. '&&'는 AND 연산자로 피연산자 양쪽 모두 참(True)이면 참이다. '∥'는 OR 연산자로 피연산자 중 어느 한 쪽이 참(True)이면 참이다. 같은 조건식이라도 피연산자의 위치에 따라서 연산속도가 달라질 수 있으며, '&&'의 경우에는 연산결과가 거짓(False)일 확률이 높은 피연산자를 연산자의 좌측에 놓아야 더 빠른 연산결과를 얻을 수 있다.[1]
논리 연산자 x y x∥y x && y true true true true true false true false false true true false false false false false
논리식을 구성하는 요소이며 부정이나 논리곱, 논리합 등을 들 수 있다. 즉, 하나 또는 그 이상의 오퍼랜드에 적용되는 논리 기능을 갖는 단어나 기호. 부정이라 부르는 단항 연산에서는 오퍼랜드의 앞에 오지만 2항 연산에서는 오퍼랜드 중간에 온다.
[2]
등장배경/역사[편집]
불 대수(Boolean algebra)는 19세기 중반 영국의 수학자 조지 불(George Boole, 1815년 11월 2일 ~ 1864년 12월 8일)이 고안하고 형식화한 대수 체계를 의미한다.[3]
논리 연산(logical operation, logical connective)으로도 불린다. 수리 논리학이나 컴퓨터공학과에서, 두 개의 상태인 참(1, T, True)과 거짓(0, F, False)으로 불 연산(Boolean expression)이라 한다. 불 대수의 출현 이후로 논리학은 기호논리학의 성향이 강해지기 시작한다.
프로그래밍에서는 조건에 의한 분기나 반복을 만드는 데 이용되고, 디지털 논리 회로를 배울 때 유용하게 사용된다. 디지털 회로의 신호는 0과 1로만 구성되어 있기 때문이다. 전자계통에선 논리 연산을 하는 소자를 게이트(Gate)라고 하며 트랜지스터 여러 개를 조합해서 만들 수 있다.
이산수학에서는 속(Lattice) 중 Complementary Lattice이며 Distributive Lattice인 Lattice를 불 속(Boolean Lattice)이라 하며 이를 대수(Algebra)식으로 나타낸 것을 불 대수(Boolean Algebra)라고 한다. 불 속의 원소 개수는 해당 원자(atom) 개수 n에 대해 2n개이다. 즉, 불 속의 원소 개수는 2의 제곱수대로 올라간다고 보면 된다.
특징[편집]
AND (&&)[편집]
&&는 좌항과 우항의 값이 모두 참(true)일 때 참이 된다. And라고 읽는다. 다음 예제를 보자. 결과는 1이다. and의 좌우항이 모두 true인 것은 첫 번째 조건문 밖에 없기 때문이다.
if (true && true) { System.out.println(1); } if (true && false) { System.out.println(2); } if (false && true) { System.out.println(3); } if (false && false) { System.out.println(4); }
- 1 출력
OR (||)[편집]
||(or)는 좌우항 중에 하나라도 true라면 전체가 true가 되는 논리 연산자다. 다음 예를 보자. 결과는 1,2,3이 출력된다. 마지막 조건문의 or는 좌항과 우항이 모두 false이기 때문에 false가 된다.
if (true || true) { System.out.println(1); } if (true || false) { System.out.println(2); } if (false || true) { System.out.println(3); } if (false || false) { System.out.println(4); }
- 1, 2, 3 출력
NOT (!)[편집]
!는 부정의 의미로 not이라고 읽는다. Boolean의 값을 역전시키는 역할을 한다. true에 !를 붙으면 false가 되고 false에 !을 붙이면 true가 된다. [4]
if (!true) { System.out.println(1); } if (!false) { System.out.println(2); }
- 2 출력
각주[편집]
- ↑ 〈논리 연산자 및 비트 연산자〉, 《세바의 코딩교실》, 2016-01-28
- ↑ 〈논리연산자란〉, 《네이버 지식백과》
- ↑ 〈논리연산자의 역사〉, 《나무위키》
- ↑ 〈논리연산자 java 코드〉, 《생활코딩》
참고자료[편집]
- 〈네이버 지식백과〉
- 〈나무위키 : 논리연산〉
- 〈js : 논리연산자〉, 2020년 1월 8일
- 〈TCPSCHOOL : 논리연산자〉
- 〈위키백과 : 항등원〉
- 〈위키백과 : 이중부정〉
- 〈생활코딩 : 논리연산자〉
같이 보기[편집]