2. 정보의 표현과 정리
CS/컴퓨터 시스템

2. 정보의 표현과 정리

숫자, 문자를 어떻게 표현하고 어떻게 정리하느냐 하는걸 다루는 챕터다.

앞에만 다루고 뒤에는 산수 계산방법이랑 범위같은걸 수학적으로 증명하고 IEEE 부동소주점 기준.. 다 학사시절에 지겹게 듣던 것들이라 대부분 생략했다.

 

long만 CPU 비트에 따라 다르게 한다고 한다.

데이터 타입에 따른 저장 크기.

메모리같은 저장장치에 한 공간 당 1byte크기만큼 저장할 수 있는데(물론 어디에 저장할지 같은 자세한 저장 방식은 나중에 나올듯), 위 예시에서 int는 4byte가 필요해서 연속으로 저장할건데 1byte를 4개로 나눠서 저장해야하니까 순서를 어떻게 할거냐가 문제다. 그래서 빅엔디안, 리틀엔디안 방법이 나온거고. 어떤걸 쓰는지는 CPU마다 다름(대채로 리틀엔디안 쓰는듯).

헷갈린건 주소 크기가 1word인거고, 저장 크기가 1bytge인거다. 1word는 cpu가 32-bit, 64-bit에 따라 4byte, 8byte이고, 저장소 크기는 0~2^w-1 범위를 가진다.

0x01234567인 int를 넣었을 때

빅엔디안은 주소값 앞에 중요한 수를 넣고, 리틀엔디안은 별로 안중요한 값을 넣는다.

 

근데 이걸 왜 알아야 되냐??

첫째로는 네트워크에서, 서로 다른 CPU들끼리 정보 공유할 때 네트워크 표준으로 변경시켜야 하기 때문.

두번째는 실제로 역어셈블리로 깠을 때 모르면 당황할 수 있다.

43 0b 20 00을 빅 엔디안이랑 리틀 엔디안으로 읽었을 때 다르다.

 

이 뒤에는 signed, unsigned의 데이터 타입과, 2의 보수, 이 데이터들을 더하거나 뺐을 때 일어나는 overflow랑 underflow, 범위, IEEE 표준 부동소수점, 이것들을 수학적으로 정의하고 증명한 내용들임. 이미 알고 있고 자세히 알만한 내용은 아니라서 대충 읽었다.

 

기억나는건 signed, unsigned, size_t 데이터 타입들을 헷갈리지 마라. 오류 난다.. 예를들면 unsigned는 0에서 -1하면 21,768,~~~ 어쩌구로 되는거, 그래서 while n <= len() 같은거 할 때 음수가 되는게 아니라 매우 큰 값이 되서 무한루프 돌 수도 있고 이상한 메모리범위에 갈 수도 있고

'CS > 컴퓨터 시스템' 카테고리의 다른 글

1. 컴퓨터 시스템으로의 여행  (0) 2023.04.05
0. 무슨 게시판?  (0) 2023.04.05