본문으로 바로가기

파이썬 몰랐던 부분들 정리

category AIFFEL 대전/Fundamentals 2021. 1. 4. 19:40

1.함수 선언 시 input 값 디폴트 처리

def say_hi_default(name='somebody'):

    print('안녕, ' + name + '!')

say_hi_default('준이')

say_hi_default()

 

2.피보나치 수열의 재귀적 표현

def fibonacci(n):
    if n <= 2:
        return 1
    else:
        return fibonacci(n-2) + fibonacci(n-1)
n = 1
while n <= 20:
    print(fibonacci(n))
    n = n + 1
print('끝!')

 

3.비교 연산자

(==) vs (is/is not)

print(1 == 1.0)  # True

어떻게 int 1 과 float 1.0 이 같은가?

== 연산자는 값만 보기 때문에

 

4.부동소수점

참고 : https://thrillfighter.tistory.com/349

 

부동소수점 구성(32bit) : 부호(1bit), 지수부(8bit), 가수부(23bit)

 

변환 방법 

1)부호부 / 정수부 / 소수부를 각각 2진법으로 변환

2)1)을 1.xxxx * 2^n 형식으로 전환한다

3)소수부 23자리 빈자리 채워준다

4)지수부 n >> 2진수 전환 >> n(2) + 0111 1111(IEEE754표준 127바이어스)

5)다 합치면 완성

 

예제1) 19.25 -> 127 바이어스 법

1)부호부 : +, 0 / 정수부 19 : 10011(2) / 소수부 0.25 : 0.01(2) # 10011.01

2)19.25(10) = 1.001101 * 2^4(2)

3)1.001101 >> 001101 >> 0011 0100 0000 0000 0000 000

4)4 : 100(2) >> 100 + 0111 1111(127) = 1000 0011

5) 0 1000 0011 0011 0100 0000 0000 0000 000

 

예제2) -0.4 -> 16 부동소수(1/5/10bit)

1)부호부 : 1(-) / 정수부 : 0 / 소수부 : 0.01100110011001100.....(무한소수)

2)-0.4(10) = 1.10011001100..... * 2^-2 (2진법)

3)소수부 1001100110

4)지수부 -2 > 2의보수법 > 1 1110 + 0 1111 (바이어스상수, 2^5-1, 15) >> 0 1101

5)1 0 1101 1001100110

 

예제3) 0

0 00000 0000000000

 

예제4) 2^-127 이하

양수 중 최소값은? 

약속1 - 지수부 모든 bit 0, 가수부는 bit 0 아님 >> 유효수의 정수값이 1이 아닌 0으로 약속한다.

0 0000 0000 0000 0000 0000 0000 0000 001

(X)

(O)

 

부호 : 0

지수부 : 0000 0000

가수부 : 0000 0000 0000 0000 0000 000

32bit float 표현 최소값 : 2^149

 

 

5.보수 

참고 ndb796.tistory.com/4

1)1의 보수

 - a 의 보수 b 라고 하면, a + b = 1, a = 1 - b 가 된다.

 - a-b 와 같은 빼기 계산할 때, 컴퓨터는 +만 계산할 수 있으므로, b의 보수를 구한 후, a + (-b) 를 계산한다.

2)2의 보수