본문 바로가기
C++ 200제/코딩 IT 정보

TypeScript 강좌 11. Primitive 연산자 Math 객체

by vicddory 2020. 1. 27.


연산자

+, -, *, /, %(나머지) 일반적인 수학(수치 계산) 연산자를 사용할 수 있습니다. 타입스크립트에선 이 밖에도 **라는 거듭제곱 연산자가 ES2016에 추가되었습니다. (예전에는 Math.pow(x, y) 사용)


또한, number 정수로 다루므로 typescript 역시, 비트 연산이 가능합니다. 비트 연산은 2진수로 표현된 표를 사용하여 계산한다고 생각하시면 됩니다. 컴퓨터의 내부는 비트 단위로 처리하므로 고속 로직 구현에 사용되는 경우가 많습니다.


비트 연산 용도로는 유전자 정보를 고속으로 계산하는데 사용하는 FM-Index와 같은 알고리즘 등이 있습니다. 타입스크립트 역시 간결한 데이터 구조가 핵심입니다.

그러나 비트 연산 시 정확도는 32비트 정수로 반올림하여 이루어집니다. 이 점은 기억해두세요.


 AND

 a & b

 두 숫자에 대응하는 비트가 모두 1이면 1을 반환

 OR

 a | b

 두 숫자에 대응하는 비트 중 하나가 1이면 1을 반환

 XOR

 a ^ b

 두 숫자에 대응하는 비트 중 한쪽만 1인 경우 1을 반환

 NOT

 ~a

 비트 반전

 LSHIFT

 a << b

 a 비트를 b(32 이하의 정수)만큼 왼쪽으로 밀어 오른쪽에 0을 채움

 RSHIFT

 a >> b

 a 비트를 b(32 이하의 정수)만큼 오른쪽으로 밀어서 왼쪽에 0을 채움. 부호 유지됨

 채움 RSHIFT

 a >>> b

 a 비트를 b(32 이하의 정수)만큼 오른쪽으로 밀어서 왼쪽에 0을 채움


특수한 수치 

수치 계산 도중 정상적인 수치로 취급할 수 없는 결과가 나올 수 있습니다. 만약, 의도치 않게 등장했다면 논리적 결함일 가능성이 높습니다.


  • 무한대 : Infinity
  • 숫자가 아니다 : NaN(Not a Number)



Math 객체

TypeScript에서 수치 계산할 경우, Math 객체의 함수나 상수를 사용합니다.


수치의 최대치, 최소치

 함수

 설명

 Math.max(x, y, …)

 여러 값 중 최대 값 반환. 배열 수치 중 최대치를 원할 경우 Math.max(...array)

 Math.min(x, y, …)

 여러 값 중 가장 작은 값 반환. 배열 수치 중 최소치를 원할 경우 Math.min(...array)


난수 생성 함수도 여기에 포함됩니다. 0에서 1 미만의 값을 리턴합니다. 타입스크립트에선 예를 들어 0-9 사이의 정수가 필요한 경우는 10배 늘리고 Math.floor() 등을 사용하면 좋겠죠.


난수

함수

 설명

 Math.random()

 0 이상 1 미만의 난수를 반환. 암호학적 난수가 필요한 경우 crypto.randomBytes()를 사용


정수로 변환하는 함수는 많습니다. 겉보기에 비슷한 함수가 많아요. 예를 들어, Math.floor()와 Math.trunc()는 비슷하지만, 음수 값을 넣었을 때, 전자는 수치가 낮아지는 방향으로(-1.5이라면 -2) 반올림하지만, 후자는 0에 가까운 방향으로 반올림하는 차이가 있습니다.


정수 변환 

함수

 설명

 Math.abs(x)

 x의 절대값 반환

 Math.ceil(x)

 x 이상의 최소 정수 반환

 Math.floor(x)

 x보다 작은 최대 정수 반환

 Math.fround(x)

 x에 근사한 단일 정밀도 부동 소수점 반환. ES2015 이상.

 Math.round(x)

 x를 반올림하여 근사치의 정수를 반환

 Math.sign(x)

 x가 양수이면 1, 음수이면 -1 0 반환. ES2015 이상.

 Math.trunc(x)

 x의 소수점 이하를 버린 값을 반환. ES2015 이상.


정수 연산 보조 함수도 있습니다. 비트 연산과 함께 사용하는 경우가 많습니다.

32 비트 정수

 함수

 설명

 Math.clz32(x)

 x를 2진수 32비트 정수로 나타냄 -> 숫자 앞에 오는 0의 개수 반환. ES2015 이상.

 Math.imul(x, y)

 32 비트 간의 정수 곱셈 결과 반환. 초과 범위는 잘림. 주로 비트 연산과 함께 사용. ES2015 이상.


타입스크립트엔 제곱근 등에 대한 typescript 함수도 있습니다.


루트

 함수, 상수(정수)

 설명

 Math.SQRT1_2

 1/2 제곱근 정수

 Math.SQRT2

 2 제곱근 정수

 Math.cbrt(x)

 x 세제곱근 반환다. ES2015 이상

 Math.hypot(x, y, …)

 인수 값의 제곱합의 제곱근 반환. ES2015 이상

 Math.sqrt(x)

 x의 제곱근 반환


로그 대수와 관련한 typescript 함수입니다.


로그

함수, 상수(정수)

 설명

 Math.E

 자연 로그의 밑수(네이피어 수)를 나타내는 정수

 Math.LN10

 10의 자연 대수를 나타내는 정수

 Math.LN2

 2의 자연 대수를 나타내는 정수

 Math.LOG10E

 10을 바닥으로 한 e의 대수를 나타내는 정수

 Math.LOG2E

 2를 바닥으로 한 e의 대수를 나타내는 정수

 Math.exp(x)

 Math.E ** x 를 반환

 Math.expm1(x)

 exp(x)에서 1을 뺀 값을 반환. ES2015 이상

 Math.log(x)

 x의 자연 로그 반환

 Math.log1p(x)

 1 + x의 자연 로그 반환. ES2015 이상

 Math.log10(x)

 x 10을 바닥으로 한 대수를 반환. ES2015 이상

 Math.log2(x)

 x의 2를 바닥으로 한 대수를 반환. ES2015 이상


마지막은 타입스크립트에서 사용할 수 있는 파이(원주율)와 삼각 함수입니다. 인수와 반환 값으로 각도를 가진 것은 라디안이므로, 도(°) 수치를 가진 경우에 * Math.PI / 180 라디안으로 변환하세요.




미완성 글입니다 ...

댓글