안녕하세요
https://dojang.io/mod/page/view.php?id=35
공부하다가 int64_t와 같이 크기가 표시된 정수 자료형 말고
크기가 표시된 실수 자료형도 있는지 궁금해서 질문 남깁니다.
double64_t 이런식으로 된 자료형이 있나요?
없습니다.
정수형은 역사적으로 크기가 달라서 표준안이 필요했으나
실수형은 IEEE 754 표준안에 따라 사용하기 때문에 비트수가 같습니다.
8비트 프로세서는 8비트로 정수를 표기했고,
16비트 프로세서는 16비트로 정수를 표기했습니다. 기본 데이터 처리 단위가 달랐습니다.
10비트 프로세서는 10비트로 정수를 표기했습니다.
8비트 프로세서에서 16비트를 표기하려면 두 개의 8비트를 조합해서 처리하는 방식을 사용했습니다. 지금처럼 간단하게 숫자 하나로 표기할 수 없었습니다.
32비트가 정수형의 표본처럼 쓰이기 시작한 것은 32비트 프로세서가 등장한 이후입니다.
C 언어는 시스템 프로그래밍 언어이기 때문에 하드웨어와 밀접합니다.
C 언어 명세서는 8비트 = 1바이트라고 가르치지도 않으며, 과거에서는 10비트 = 1바이트로 처리하는 프로세서도 있었습니다. C 언어는 이들 하드웨어를 모두 지원하기 때문에 명세서 어디에도 8비트 = 1바이트라고 설명하지 않습니다. 이렇게 설명하는 C 언어 입문서는 오류인 것이죠.
1워드 = 1바이트가 기본 명세입니다. 프로세서가 처리하는 메모리 단위가 1워드이고, 10비트 단위로 메모리를 처리한다면 1워드는 10비트이고, 1바이트는 10비트입니다.
오늘날처럼 8비트 단위로 메모리를 처리하는 시스템이 정착한 환경에서는 1바이트 = 8비트가 보편적으로 인식되지만, 이는 사실이 아닙니다.
초기 하드웨어는 실수를 제대로 처리하지 못했고, 8086 프로세서가 있다면 부동소수점(실수) 처리를 가속하는 8087 가속기가 별도로 있었습니다. 이는 매우 비싸서 8087 가속기를 장착한 시스템은 드물었습니다. 메인보드에 별도 소켓이 있어서 확장할 수 있었습니다. 이를 코프로세서(co-processor)라고 불렀습니다.
현대 프로세서는 x86 계열이 널리 쓰이고 있고, 부동소수점을 처리하는 코프로세서는 x87이었습니다. 80586과 80587을 마지막으로 현대 프로세서는 정수 처리와 실수 처리를 하나의 프로세서에 집적하게 되었으므로 이러한 구분이 사라졌습니다.
코프로세서가 없는 8086 프로세서는 실수를 에뮬레이션해서 처리했기 때문에 계산 속도가 느렸습니다.
80387 Math Coprocessors Speed Comparison
그렇군요 명쾌한 답변 감사합니다!
사이트에서 공부하면서 오타나 오류하나 없는것에 놀라고
반복문에 주로 쓰는 'i' 변수가 index의 약자라는걸
제가 학교에서 반복문 배울때는 아무도 알려주지 않았지만
여기서는 이렇게 하나하나 무엇의 약자인지도 알려주고
답변에서 또 관리자님의 해박한 지식에 놀라고 갑니다.