6.3. 프로그램언어 고(Go)의 논리 연산자

프로그램언어 고(Go)의 논리 AND 연산자

프로그램언어 고(Go)의 논리 AND 연산자는 && 기호를 사용합니다. 이 연산자는 좌변과 우변의 조건이 모두 참(true)일 때만 참을 반환합니다.

예를 들어 다음과 같은 코드에서:

a := true
b := false

result := a && b

a 변수에 true가 할당되어 있고, b 변수에는 false가 할당되어 있습니다.
결과값 result에 a와 b를 논리 AND 연산을 수행하여 할당합니다.

이 때 a는 true이지만 b는 false 이기 때문에 최종 결과값 result는 false가 됩니다.
즉, && 연산자를 사용할 경우 좌변과 우변의 값이 모두 true여야지만 최종 결과값이 true가 되는 논리 AND의 성질을 보여줍니다.

다른 예시로 다음과 같이 작성할 수도 있습니다:

isAuthenticated := true 
isAdmin := false

canAccess := isAuthenticated && isAdmin 

여기서 isAuthenticated는 인증 여부를, isAdmin은 관리자 권한 여부를 나타내는 bool 변수들입니다.

논리 AND 연산을 수행한 결과 canAccess에 할당합니다.
isAuthenticated는 true지만 isAdmin은 false 이므로
최종 canAccess 값은 false가 됩니다.

이처럼 Go의 논리 AND(&&) 연산자를 사용하면
모든 조건문이 참일 때만 참을 반환하는 기능을 가집니다.
if문 등의 조건문에서 자주 사용되므로 꼭 숙지하시기 바랍니다.

늘 건강하시고 행복하시기를 기원합니다.

프로그램언어 고(Go)의 논리 OR 연산자

프로그램언어 고(Go)에서 논리 OR 연산자는 |(파이프) 기호를 사용합니다. 이 연산자는 양쪽의 값이 False일 경우에만 False를 반환하고, 한 쪽의 값이 True이면 True를 반환합니다.


package main

import "fmt"

func main() {
  a := true 
  b := false

  result1 := a | b
  result2 := b | b

  fmt.Println(result1) // true
  fmt.Println(result2) // false
}

위의 예제코드에서 변수 a는 true이고, 변수 b는 false입니다.

result1은 a | b의 결과로 true | false 입니다. OR 연산의 특성상 한쪽 값이 True이면 결과가 True이므로 result1에는 True가 저장됩니다.

result2는 b | b의 결과로 false | false 입니다. 양쪽 값이 모두 False 이므로 결과도 False가 됩니다.

따라서 | 기호를 사용한 논리 OR 연산의 결과를 출력하면 result1은 true, result2는 false가 출력됩니다.

OR 연산자는 보통 조건문에서 자주 사용됩니다. 아래는 논리 OR을 사용한 간단한 조건문 예제입니다.


func printHello(name string) {
  if name == "태연" || name == "진수" {
    fmt.Println("안녕하세요", name) 
  } else {
    fmt.Println("만나서 반갑습니다.", name)
  } 
}

printHello 함수는 name 파라미터를 받아 인사말을 출력합니다.

name 값이 “태연”이거나 “진수”일 경우 “안녕하세요”라는 인사를 하고, 그 외의 경우 “만나서 반갑습니다”라고 출력합니다.

|| 기호를 사용하여 OR 조건을 명시했습니다. 따라서 name 값이 둘 중 하나이면 true를 반환하여 if문 내부가 실행됩니다.

이처럼 논리 OR은 조건문의 조건을 표현하는데 유용하게 사용할 수 있습니다. 불리언 값을 연산하여 True/False을 결정짓는 데 도움을 줍니다.

논리 OR에 대한 더 자세한 사용 예시가 필요하다면 말씀해 주세요. 고(Go) 학습에 도움이 되었으면 좋겠습니다.

프로그램언어 고(Go)의 논리 NOT 연산자

프로그램언어 고(Go)에서 논리 NOT 연산자는 ‘!’ 기호를 사용합니다.


package main

import "fmt"

func main() {

  var a bool = true
  var b bool = false

  fmt.Println(!a) // false
  fmt.Println(!b) // true

}

위의 예제코드에서 보다싶이, ‘!’ 기호를 변수 앞에 붙여서 그 변수의 논리값을 반전시킵니다.

즉, ‘true’값은 ‘false’로, ‘false’값은 ‘true’로 바꾸어 줍니다.

이를 ‘부정(negation)’이라고도 하는데, 기존 논리값을 정 반대로 만들어 주는 연산자이기 때문입니다.

논리 NOT 연산자는 주로 조건문에서 변수의 논리값을 판단할 때 사용합니다.


func print(check bool) {
  if !check {
    fmt.Println("check가 false입니다") 
  } else {
    fmt.Println("check가 true입니다")
  }
}

위 예제에서 if 조건문에 !check로 해당 변수의 부정을 이용하고 있습니다.

즉, check가 false일 경우에만 “check가 false입니다”를 출력하는 논리를 구현하고 있죠.

이 외에도 while문이나 for문의 조건식에 !연산자를 사용하여 반대의 조건을 대입하는 경우가 많습니다.

가끔 모든 조건에 대한 부정이 필요할 때, 변수들을 묶어서 !연산자를 사용하기도 합니다.


if !(a || b || c) {
  // 모든 조건이 false일 때 실행   
}

이상으로 프로그램언어 고(Go)의 논리 NOT 연산자 ‘!”에 대해 간략히 설명해드렸습니다.
코드 예제와 함께 보다 자세히 이해하실 수 있으리라 생각합니다.

프로그램언어 고(Go)에서의 논리 XOR 연산자

프로그램언어 고(Go)에서의 논리 XOR(exclusive OR, 배타적 논리합) 연산자는 ‘^’기호를 사용합니다.

XOR 연산자는 두 개의 피연산자가 서로 다를 때만 true를 반환합니다. 즉, 두 개의 입력이 같으면 false를, 다르면 true를 반환합니다.

package main

import "fmt"

func main() {

    a := true
    b := false

    c := a ^ b
    fmt.Println(c) // true

    d := a ^ a 
    fmt.Println(d) // false
}

위의 예제코드에서 변수 a는 true이고, 변수 b는 false입니다.

변수 c는 a와 b를 XOR 연산한 결과로, 서로 다른 값이므로 true가 됩니다.

변수 d는 a와 a를 XOR 연산한 결과로, 같은 값이므로 false가 됩니다.

즉, XOR은 두 개의 값이 서로 같으면 false, 다르면 true를 반환합니다.

XOR 연산자의 이런 성질을 이용하여 두 값이 같은지 다른지를 판별하는데 사용할 수 있습니다.

또한 비트 단위의 XOR 연산은 비트를 토글하는데 사용할 수 있습니다.

예를 들어,

a = 1010 (10 진수: 10)
b = 0110 (10 진수: 6) 

a ^ b = 1100 (10진수: 12)

와 같이, 서로 다른 비트의 값을 바꿀 수 있습니다.

위 예제에서 a의 1번과 3번 비트는 b와 다르고, 2번과 4번 비트는 b와 같습니다.

XOR 연산 결과 1번과 3번 비트는 바뀌고, 2번과 4번 비트는 바뀌지 않았습니다.

이처럼 XOR은 두 비트열 중 서로 다른 비트만 1로 만들고, 같은 비트는 0으로 만드는 특성이 있습니다.

이를 이용하여 비트를 Toggle하는 용도로 사용할 수 있습니다.

지금 설명드린 내용이 부족하다면 언제든지 문의 주세요. 최선을 다해 도와드리겠습니다.

프로그램언어 고(Go)에서의 비트 반전 연산자

고(Go) 프로그램 언어의 비트 반전 연산자에 대해 설명드리겠습니다.

비트 반전 연산자는 ^ 기호를 사용하며, 이는 두 개의 피연산자의 비트 단위로 XOR 연산이 수행됨을 의미합니다. 즉, 두 비트가 서로 다를 경우 1을 반환하고, 같을 경우 0을 반환합니다.


package main

import "fmt"

func main() {
    a := 6 // 비트 표현: 00000110  
    b := 3 // 비트 표현: 00000011
    
    c := a ^ b
    fmt.Println(c) // 출력: 5 (비트 표현: 00000101)  
} 

위의 예제코드에서 변수 a는 6, 변수 b는 3으로 각 비트 표현을 보면 서로 다른 비트 위치의 값들입니다.

^ 비트 반전 연산자를 사용하면 서로 다른 비트의 값들을 XOR 연산 하여 결과값으로 5가 도출됩니다.

즉, 6(00000110)과 3(00000011)을 XOR 연산하면
0(이 비트 반전: 0 ^ 0 = 0)
0(이 비트 반전: 0 ^ 0 = 0)
1(이 비트 반전: 0 ^ 1 = 1)
1(이 비트 반전: 1 ^ 0 = 1)
0(이 비트 반전: 1 ^ 1 = 0)
1(이 비트 반전: 1 ^ 0 = 1)

과 같이 각 자릿수별로 XOR 연산이 이루어지므로, 00000101인 10진수 5가 결과값으로 출력됩니다.

이를 통해 비트 반전 연산자 ^는 두 개의 피연산자를 비트 단위로 XOR 논리 연산을 수행하여 결과를 반환한다는 것을 알 수 있습니다.

특히 두 값이 서로 다를 때 1을, 같을 때 0을 반환하는 성질을 이용하여 부울 대수의 배타적 논리합(XOR) 연산을 구현할 수 있습니다.

이상으로 고(Go) 프로그램 언어의 비트 반전 연산자에 대해 간략히 설명드렸습니다. 코드 예제와 함께 이해에 도움이 되었기를 바랍니다.

Leave a Comment