일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- C++
- BST
- Tree
- trading view
- 선물
- 트리
- 오버로딩
- 바이낸스
- 순회
- 템플릿 함수화
- array
- 전위
- linked list
- 숫자
- 후위
- template
- Python
- 비트코인
- 연결 리스트
- Windows
- 기초
- #선물 #비트코인#알트코인#매매#코인#마진
- Data Structure
- 알고리즘
- mutable
- 문자열
- Basic
- 이진 탐색 트리
- 자료구조
- SCM
Archives
- Today
- Total
Project Hub
숫자 본문
728x90
반응형
파이썬 자료구조와 알고리즘 책 내용을 정리
1.1 정수
- int 로 나타냄.
- 불변형 (immutable)
- 정수의 크기는 컴퓨터의 메모리 크기에 의해 제한된다.
- 적어도 32비트
- 정수를 나타내는 데 필요한 바이트 수 확인 (3.1 이상) : (정수).bit_length()
- 문자열을 정수로 변환하거나, 다른 진법의 문자열을 특정 진법의 정수로 변환할 때 int(문자열, 진법) 메서드를 사용
1.2 부동소수점
- float 로 나타냄.
- 불변형 (immutable)
- 단정도 방식과 배정도 방식 존재
- 단정도
- 1 비트는 부호 비트
- 23 비트는 유효 숫자 자리수
- 8 비트는 지수 (2^7 - 1)
- 배정도
- 1 비트는 부호 비트
- 52 비트는 유효 숫자 자리수
- 11 비트는 지수 (2^10 - 1)
- 단정도
- 단정도 표현 예
-118.625 를 32 비트 단정도로 표현
118 % 2 = 59 ... (0)
59 % 2 = 29 ... (1)
29 % 2 = 14 ... (1)
14 % 2 = 7 ... (0)
7 % 2 = 3 ... (1)
3 % 2 = (1) ... (1)
0.625 * 2 = 1.250
0.250 * 2 = 0.500
0.500 * 2 = 1.000
=> 1110110.101
=> 1.110110101 * 2^6
부호비트: 1
가수비트: 11011010100000000000000
지수비트: 6 + 127 = 133 = 10000101
=> 1 10000101 11011010100000000000000
1.2.1 부동소수점끼리 비교하기
- 부동소수점은 이진수 분수로 표현됨
- 함부로 비교하거나 빼연 안된다.
- 예상과 다른 결과를 반환하는 예
0.2 * 3 == 0.6 False
1.2 - 0.2 == 1.0 True
1.2 - 0.1 == 1.1 False
0.1 * 0.1 == 0.01 False
- 동등성 테스트는 사전에 정의된 정밀도 범위 내에서 수행되어야 한다.
- 부동소수점 비교 함수
def a(x, y, places = 7):
return round(abs(x-y), places) == 0
'''
abs(): 절댓값
round(x, n): n이 음수인 경우, x를 정수 n번째 자리에서 반올림 한 값을 반환
n이 양수인 경우, x를 소수점 이하 n번째 자리로 반올림한 값을 반환
'''
1.2.2 정수와 부동소수점 메서드
- 나누기 연산자 '/' 는 항상 부동소수점을 반환함.
- '//' 연산사를 사용하면 정수를 반환할 수 있다.
- divmod(x, y) 메서드는 x를 y로 나눌 때, 몫과 나머지를 반환한다.
1.3 복소수
- z = 3 + 4j 와 같이 생긴 부동소수점 한 쌍을 갖는 불변형
- z.real: 실수부
- z.imag: 허수부
- z.conjugate(): 켤레 복소수 구함
- 복소수를 사용하려면 cmath 모듈을 임포트해야 함.
1.4 fraction 모듈
- 분수를 다루기 위해서 사용
from fractions import Fraction
# as_integer_ratio() 함수를 통해 분수 형태의 값을 분수 모양으로 반환
def float_to_fractions(number):
return Fraction(*number.as_integer_ratio())
# 분모 반환
def get_denominator(number1, number2):
result = Fraction(number1, number2)
return result.denominator
# 분자 반환
def get_numerator(number1, number2):
result = Fraction(number1, number2)
return result.numerator
1.5 decimal 모듈
- 정확한 10 진법의 부동소수점 숫자가 필요한 경우 부동소수점 불변 타입인 decimal.Decimal 사용 할 수 있다.
- Decimal() 메서드는 정수 또는 문자열을 인수로 취함.
- 이 모듈은 부동소수점의 반올림, 비교, 뺄셈 등에서 나타나는 문제를 효율적으로 처리 가능.
print(sum(0.1 for i in range(10)) == 10)
=> False
from decimal import Decimal
print(sum(Decimal("0.1") for i in range(10)) == Decimal("1.0"))
=> True
1.6 2진수, 8진수 16진수
- bin(i): 정수 i의 2진수 문자열을 반환.
- oct(i): 정수 i의 8진수 문자열을 반환.
- hex(i): 정수 i의 16진수 문자열을 반환.
728x90
반응형
'Python > 기초 개념' 카테고리의 다른 글
문자열 패킹과 언패킹 (0) | 2022.10.14 |
---|---|
문자열 (0) | 2022.10.14 |
얕은 복사와 깊은 복사 (0) | 2022.10.14 |
mutable object & immutable object (0) | 2022.08.15 |
Comments