본 게시글은 부스트코스의 코틀린 기본프로그래밍을

시청한 후 학습한 정보를 기록하는 목적의 게시글입니다.

부스트코스

 

다 함께 배우고 성장하는 부스트코스

부스트코스(boostcourse)는 모두 함께 배우고 성장하는 비영리 SW 온라인 플랫폼입니다.

www.boostcourse.org

코틀린 기본프로그래밍(1/2)

 

코틀린 프로그래밍 기본1/2(함수편)

부스트코스 무료 강의

www.boostcourse.org

본 게시글은 부스트코스 서포터즈 3기 활동 게시글입니다.


#2-4. 연산자를 조합해 다양한 식 만들기 (1) 기본 연산자

- 들어가기 전에

코틀린의 기본 연산자는 산술, 대입, 증가, 감소, 비교, 논리 연산자 등의 종류가 있습니다. 수학이나 많은 언어에서 거의동일한 방법으로 사용하고 있으니 정리하는 정도로 살펴보도록 하겠습니다. 

 

- 핵심 키워드

  • 산술 연산자 (+, -, /, *, %)
  • 대입 연산자 (=, +=, -=, /=, %=)
  • 증감 연산자 (++, --)
  • 비교 연산자 (<, >, <= ...==, ===)
  • 논리 연산자 (&&, ||, ! )

 

1) 산술 연산자

사칙연산에 사용되는 사칙연산자와 나머지 연산자를 산술 연산자라 칭한다

+ : 덧셈, - : 뺄셈, * : 곱셈, / : 나눗셈, % : 나머지셈

    if ((n % 2) == 1) { // 홀수
        println("n is an Odd number")
    }
    if ((n % 2) == 0) { // 짝수
        println("n is an Even number")

 

2) 대입 연산자

대입 연산자는 변수에 값을 할당하는 연산자를 말한다.

대입 여난자는 이항 연산자 중 우선 순위가 가장 낮은데,

이 말은 즉 모든 연산이 끝난 이후 가장 마지막에 동작한다는 의미이다.

val numOfApple = 12  // 변수가 대입 연산자에 의해 할당
val result = numOfApple - 2 // 표현식이 대입 연산자에 의해 결괏값 할당

어떤 변수에 저장된 값으로 연산을 수행한 다음 그 결과값을 다시 변수에 할당할 땐 아래와 같이 사용할 수도 있다.

num = num + 2 // 산술 연산자와 대입 연산자를 함께 사용하는 경우
num += 2 // 이렇게 간략하게 표현

비단 이는 덧셈뿐 아니라 나머지 산술연산에도 동일한 방식으로 적용할 수 있다.

 

3) 증감 연산자

증가 연산자와 감소 연산자는 항이 1개인 단항 연산자이다.

항의 앞이나 뒤에 붙어 사용하며 1을 더하거나 빼는 연산을 수행한다,

항이 앞에 붙는 경우와 뒤에 붙는 경우 연산 결과가 다르므로 주의하여야 하는데,

항 앞에 붙은 경우는 증감 연산자를 수행하고 값을 대입하며,

항 뒤에 붙은 경우에는 값을 대입하고 증감 연산자를 수행한다.

fun main() {
    var num1 = 10
    var num2 = 10
    val result1 = ++num1 // num 값 증가 후 대입
    val result2 = num2++ // 먼저 num 값 대입 후 증가

    println("result1: $result1")
    println("result2: $result2")
    println("num1: $num1")
    println("num2: $num2")
}

 

4) 비교 연산자

비교 연산자는 두 개의 항의 값을 비교하기 위해 사용한다.

모든 비교 연산자는 비교 결과가 참이면 true를, 거짓이면 false를 반환한다.

연산자 의미
(아니면 fasle)
> 좌항이 크면 true
<  좌항이 작으면 true
>= 좌항이 크거나 같으면 true
<= 좌항이 작거나 같으면 true
== 두 항의 값이 같으면 true
!= 두 항의 값이 다르면 true
=== 두 항의 참조가 같으면 true
!== 두 항의 참조가 다르면 true

 

5) 논리 연산자

논리 연산자에는 논리곱, 논리합, 부정 연산자가 있다.

연산자 의미
(아니면 false)
&& 두 항이 모두 true면 true
|| 두 항 중 하나의 항이라도 true면 true
! ture를 false로, false를 true로 반환

논리 연산자는 비교 연산자와 함께 사용하는 경우가 많다.

var check = (5>3) && (5>2)  // 2개의 항((5>3), (5>2))이 모두 참이면 true
check = (5>3) || (2>5)      // 2개 중 1개의 항이 참이면 true
check = !(5>3)              // true는 false로, false는 true로 변경

 

#2-4. 연산자를 조합해 다양한 식 만들기 (2) 비트 연산자

- 들어가기 전에

비트연산은 임베디드 시스템에서 많이 사용되고 있습니다. 우리가 사용하는 10진법은 인간에게 유리한 수의 체계이지만 컴퓨터와 같은 기계는 프로세서가 처리하는 단위는 0과 1로 이루어진 2진법의 체계가 유리합니다. 다만, 사람이 이해하기 힘들기 때문에 16진법을 한자리와 2진법의 4자리 단위가 서로 매치하므로 16진법을 주로 코드에서 사용하고 있습니다.

여기서는 비트연산에 사용되는 연산자를 살펴보고 간단히 이해하도록 하겠습니다.

 

- 핵심 키워드

  • 2진법: 0b0000_0011(2) = 3(10)
  • 16진법: 0x3F(16) = 0b0011_1111(16) = 1 + 2 + 4 + 8 + 16 + 32 = 63(10)
  • 비트 왼쪽/오른쪽 쉬프트
  • 비트의 논리연산
  • 비트 뒤집기

 

1) 비트 연산의 이해

비트 연산자는 기계가 이해할 수 있는 값인 0과 1을 처리하는 데 사용한다.

변수에 저장되는 값을 비트로 표현할 수 있어야 비트 연산자를 이해할 수 있는데 비트는 2진수로 표현된다.

2진수로 표현된 비트의 가장 왼쪽에 있는 수(비트)는 양, 음을 판단하는 데 사용한다.

 

2) 비트 연산자의 종류

표현식 설명
x.shi(bits) x를 표현하는 비트를 bits만큼 왼쪽으로 이동 (부호 있음)
x.ushi(bits) x를 표현하는 비트를 bits만큼 왼쪽으로 이동 (부호 없음)
.xshr(bits) x를 표현하는 비트를 bits만큼 오른쪽으로 이동 (부호 있음)
x.ushr(bits) x를 표현하는 비트를 bits만큼 오른쪽으로 이동(부호 없음)
x.and(bits) x를 표현하는 비트와 bits를 표현하는 비트로 논리곱 연산
x.or(bits) x를 표현하는 비트와 bits를 표현하는 비트로 논리합 연산
x.xor(bits) x를 표현하는 비트와 bits를 표현하는 비트의 배타적 연산
x.inv() x를 표현하는 비트를 모두 뒤집음

- 사용

fun main() {
    var x = 4
    var y = 0b0000_1010 // 10진수 10
    var z = 0x0F        // 10진수 15

    println("x shl 2 -> ${x shl 2}")    // 16
    println("x.inv -> ${x.inv}")    // -5

    println("y shr 2 -> ${y/4}, ${y shr 2}")   // 2, 2
    println("x shl 4 -> ${x*16}, ${x shl 4}")  // 64, 64
    println("z shl 4 -> ${z*16}, ${z shl 4}")  // 240, 240

    x = 64
    println("x shr 4 -> ${x/4}, ${x shr 2}")  // 16, 16

}

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기