본문 바로가기

Programming/Swift for Beginners

[Swift] 010 Do math and more (계산하기) for beginners


Swift는 수학을 매우 잘합니다. 문자열혈이 문자열을 연결하는데 더하기 연산자를 사용하는 것을 보았습니다. 그러나 더하기 연산자가 문자열을 연결하는 데에만 사용되는 것은 아닙니다. 일반적으로 더하기 연산자는 숫자를 더할 때 사용하는 표현입니다. 그럼 Swift의 계산 능력을 살펴보겠습니다.

아래 예제는 기본 사칙연산인 더하기(+), 빼기(-), 곱하기(*), 나누기(/)를 다루고 있습니다. Swift는 예상했던 답을 주었고 또한 상수도 Int 형으로 할당되었습니다. 상수를 정수로 할당하는 것은 등호(=)의 오른쪽 값을 보고 Swift가 추론한 것입니다.

% 연산자를 사용해서 mod 연산을 수행해 나누기 식의 나머지 값을 반환할 수도 있습니다.

Swift에서 mod 연산자는 Double 값도 사용할 수 있습니다.

그리고 더하기와 빼기 연산자는 단항 연산자로도 사용되고 있습니다. 더하기(+) 연산자를 값의 앞에 붙이면 양수를 의미하고 빼기(-) 연산자를 사용하여 음수를 나타냅니다.

연산식 (Expressions)

Swift는 수학식인 기본 사칙 연산 즉, 왼쪽에서 오른쪽 순서로 곱하기와 나누기를 먼저 계산하고 그 다음은 더하기와 빼기를 계산하는 연산식도 지원합니다.

Swift는 다른 컴퓨터 언어처럼 수학 연산자의 기본 연산 순서대로 계산합니다.


혼합 수치 타입 (Mixing Numeric Types)

정수를 소수점과 섞으면 어떤 결과가 나올까요?

정수 48을 소수점이 있는 5.0으로 나누는 식입니다. 소수점이 있다는 것을 보고 Swift는 Double 형이라고 이미 추론했을 것입니다. anotherDivision의 결과 상수 타입도 Double 형으로 할당되었습니다. 이러한 것을 Swift의 타입 승격(Type Promotion)이라고 합니다. 이 연산식에 타입이 다른 Double 형이 있기 때문에 Int 형인 48도 같이 Double 형으로 승격된 것입니다. 그리고 상수형으로 할당된 타입도 같이 Double 형으로 승격됩니다. 타입 승격 규칙을 알고 있으면 여러모로 도움이 됩니다.

다른 타입의 수치 값이 일반 식에서 사용될 때 타입 승격은 가장 적은 것에서 가장 큰 것으로만 승격할 수 있습니다. 다시 말하면 Double이 Int 값을 표시할 수 있지만, Int 가 Double 값을 표시할 수는 없어서 Int 값이 Double 값으로 승격되는 것입니다.


수치 표현 (Numeric Representations)

Swift에서 수치의 값은 다른 방법으로 표현될 수 있습니다. 지금까지는 소수나 십진법(또는 베이스 10)과 같은 일반적인 숫자만 집중했습니다. 이제 수치 값을 다른 방식으로 표현하는 방법을 알아보겠습니다.


  - 2진법, 8진법, 16진법 (BINARY, OCTAL, AND HEXADECIMAL NOTATION)

프로그래밍 언어에 익숙한 사용자라면 베이스 2, 베이스 16에 베이스 8까지 본 적이 있을 것입니다. 즉, 이 숫자는 2진법, 16진법, 8진법을 의미합니다. 소프트웨어를 개발하면서 이런 숫자 체계는 숫자의 자연 그대로의 상태를 참조하는 약식 기호(shorthand notation)로 자주 나타나니 알고 있으면 유용합니다.

2진법의 접두사는 0b, 8진법의 접두사는 0o, 16진법은 0x입니다. 어떤 접두사도 10진수를 함축하고 있지 않습니다.

  - 과학적 표기법 (SCIENTIFIC NOTATION)

숫자를 다른 방법으로 표현할 때 과학적 표기법을 사용합니다. 과학적 표기법은 공간이 좁은 곳에서 큰 소수 자리를 표현해야 할 때 사용하면 매우 유용합니다.


e는 베이스 10의 지수를 의미하는 것으로 4.434*을 말합니다.

  - 큰 수 표기법 (Large Number Notation)

Mac 컴퓨터로 규모를 결정하기 위해 숫자 0이 엄청 많이 들어간 숫자를 세는 것을 경험한 적이 있다면 다음에 소개할 기능이 매우 반가울 것입니다. Swift는 엄청난 크기에도 불구하고 즉시 명료하게 불 수 있도록 큰 수를 경계 지을 수 있게 합니다.

밑줄 표시는 따로 의미가 있는 것은 아니고 숫자를 쉽게 읽을 수 있게 도와 줍니다.▼