메모리의 크기
- 원래 1024B = 1KB로 알고 있으나, 2000년대부터 국제 표준으로 1000B = 1KB로 바뀌고 1024B = 1KiB(키비바이트) 로 바뀌었다.
- 그러나 정착이 안되었기 때문에 1000B = 1KB, 1024B = 1KB 모두 혼용하기 때문에 상관 없다.
- KB, MB, GB, TB, ZB, YB
Word
- CPU가 한 번에 처리하는 데이터의 크기
- i.e) 64bit, 8byte
데이터가 메모리에 저장되는 방식
- 모든 데이터는 메모리에 저장하기 전에 이진수로 바꿔야 함
MSB와 LSB
00010110
이라는 이진수가 있다고 치자. 제일 왼쪽이 Most Significant Bit이고, 제일 오른쪽이 Least Significant Bit이다.
- 저장 가능한 숫자 범위에서 절반 이상의 값을 결정하기 때문에 MSB라고 한다.
- 0~255, MSB는 128. 그래서 가장 중요한 bit
- LSB는 0 아님 1이니 가장 덜 중요한 bit
Data Bit
- 실제로 데이터를 저장하는 비트.
- 메모리에 양수만 저장한다면 8개 모두 저장(0~255)
- 다만 Signed라면 절반으로 줄어듬
Signed
-123 ~ +123
Unsigned
Sign Bit
- MSB자리에 0이 오면 양수, 1이 오면 음수
- 이를 Sign Bit라고 한다.
- -123~123의 값 표현
2의 보수 방식
- 양수의 비트 값을 반전시킨 뒤, 1을 더해서 음수 표현
- i.e) 22 -> 00010110 ->(Bitwise Not) 11101001 -> 11101010
실수를 저장하는 방식
고정 소수점
- 임베디드 프로그램에서 사용
- 구현 단순, 계산 빠름
- 저장 가능 범위 적음
- 정밀도(오차없이 저장 가능한 자릿수)가 제한적
부동 소수점
ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ
Sign Exponent Mantissa
Bit
- 일반적인 프로그램에서 사용
- 부호, 지수, 가수 3가지로 나누어서 저장
- 저장 범위 넓음
- 동일한 크기에서 정수보다 표현 가능 수가 많다
- 정밀도가 높음
- 구현이 상대적으로 복잡
- 연산속도가 상대적으로 느림
- 값 저장 중 오차 발생 가능
- Swift에서는 Float(4B)-소수점 7자리, Double(8B)-소수점 16자리