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.보수
1)1의 보수
- a 의 보수 b 라고 하면, a + b = 1, a = 1 - b 가 된다.
- a-b 와 같은 빼기 계산할 때, 컴퓨터는 +만 계산할 수 있으므로, b의 보수를 구한 후, a + (-b) 를 계산한다.
2)2의 보수
'AIFFEL 대전 > Fundamentals' 카테고리의 다른 글
ubuntu 모니터 검은화면 나오는 경우 해결방법 (1) | 2021.01.11 |
---|---|
matrix transpose (0) | 2021.01.08 |
ubuntu 에서 gdrive 사용하기 (0) | 2021.01.03 |
jupyter notebook, markdown (0) | 2020.12.31 |
[아직 해결 못함] UBUNTU 이어폰 잭 언플러그 시 볼륨 0이 되는 문제 (0) | 2020.12.31 |