<첫 LMS : 6. 파이썬으로 코딩 시작하기>
새롭거나 중요한 내용
a. 6-6에서 '입력값으로 주어진 인자(argument)를 받는 변수를 매개변수(parametet)라고 합니다.' 이전까지 인자는 함수 외부에서, 매개변수는 함수 내부라고 이해하고 있었으나, 상기표현이 더 간단명료하다.
b. 고정소수점과 부동소수점
참고링크 : https://jiminish.tistory.com/81
Q1. 1.0을 32bit의 고정소수점 부동소수점 수로 표현해보자
1.0
+1.0 (10진법)
+1.0 (2진법)
+1.0 (고정소수점)
+1.0 * 2^0 (부동소수점 표현 : R=±m×2^n, 여기서 m =1.0, n= 0 )
고정소수점 32비트 표현
+1.0 (고정소수점)를 32비트로 표현해보자
부호비트 : 0 (+)
정수부(15비트) : 1 (정수부분) >000000000000001
소수부(16비트) : 0 (소수부분) >0000000000000000
부호비트, 정수부, 소수부를 차례로 붙이면 된다.
00000000000000010000000000000000 (차례로 0=15개, 1=1개, 0=16개)
부동소수점 32비트 표현
+1.0 * 2^0 (부동소수점 표현 : R=±m×2^n, 여기서 m =1.0, n= 0 )
를 32비트로 표현해보자
부호비트 : 0 (+)
지수부(8비트) : n+bias (n=0 , 32비트의 bias = 127. 0+127 = 127을 2진수 변환 > 01111111 이다.
가수부(23비트) :0 (m=1.0 의 소수점 아래부분이다. 따라서 0이다.)
'0'0000000000000000000000 (23비트 맞춰준다, 가수부는 앞에서 넣는다.)
종합하여 부호비트, 지수부, 가수부를 차례로 붙이면
0+01111111+00000000000000000000000
= 00111111100000000000000000000000 이다.
부동소수점의 의의 : 고정소수점의 경우 정수부와 소수부 비트수가 고정이기때문에 일정자릿수 밖의 수는 다룰 수 없다. 반면, 부동소수점의 경우 가수부와 지수부로 표현하기때문에 더 크거나 작은 수도 다룰수 있다.
c.None 과 NoneType
d. 메모이제이션(memoization)
피보나치수열과 같은 재귀함수의 경우 수가 커질수록 같은 피보나치수를 중복해서 연산하기 때문에 계산시간이 길어진다. 이때 중간계산 값을 기억하는 방식으로 계산시간을 단축한다.
memory = {1: 1, 2: 1}
def fibonacci(n):
if n in memory:
number = memory[n]
else:
number = fibonacci(n-1) + fibonacci(n-2)
memory[n] = number
return number