[iOS] 메모리

RudinP·2024년 3월 30일
0

Study

목록 보기
212/226

메모리의 크기

  • 원래 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자리
profile
곰을 좋아합니다. <a href = "https://github.com/RudinP">github</a>

0개의 댓글