며칠 글을 안썻습니다.
인제 쓸게요.
컴퓨터에서 2.98 같은 실수를 나타내는 방법은 소수점의 위치를 고정시키고 정수부와 소수부에 일정비트를 할당하는 방식입니다,
예를 들어 32비트를 사용해서 실수를 표현한다면 16비트는 정수부에 나머지 16비트는 소수부에 할당합니다.
2는 소수점 위 16비트에 0.98은 소수점 아래 16비트에 저장됩니다.
이런 방식을 고정소수점 방식이라고 합니다.
상위 16비트(소수점 위 16비트)는 부호가 있어서 1비트는 부호를 결정하는데 쓰이고 나머지 15비트는 정수를 표현하는데 쓰인다.
그래서 최고로 큰 수는 2의 15승 - 1이다.
하위 16비트(소수점 아래 16비트)는 부호가 없으므로 16비트 전부 소수점을 표현한다.
그래서 2의 16승 - 1 까지 나타낼 수 있다.
고정소수점 방식은 편리하다는 장점이 있지만 과학이나 공학에서 필요로하는 아주 큰 수를 표현하지 못한다는 단점이 있습니다.
그래서 등장한 방식이 부동소수점 방식입니다.
부동이 부동자세의 부동이 아닙니다.
'둥둥떠서 움직인다' 는 뜻입니다.
부동소수점은 가수와 지수부분이 있습니다.
그림으로 이렇게 생깁니다.
이렇게 가수와 지수를 따로 표현하면 표현할 수 있는 수의 범위가 어마어마하게 늘어납니다.
고정 소수점 방식보다 연산 속도가 느리기 때문에 별도의 전용 연산 장치를 두는 경우가 많습니다.
부동소수점의 자료형에는 float, double, long double 이 있습니다.
타입 | 바이트수 |
유효자리수(정수부) |
최소허용값/최대허용값 |
설명 |
---|---|---|---|---|
float | 4 | 24 (6) | 1.175494351 E - 38 3.402823466 E + 38 |
단일 정밀도 부동소수 (single precision) |
double | 8 | 53 (15) | 2.2250738585072014 E - 308 1.7976931348623158 E + 308 |
두배 정밀도 부동소수 (double precision) |
PC에서 double 과 long double형은 같습니다.
3.345E+2 는 334.5 를 뜻합니다.
문자와 아스키코드 임다.
솔직히 여기서 알면 좋은건 NULL 문자랑 A 랑 a 정도 인거 같아요.
ㅇㅈ?
A 랑 a 는 32차이 납니다.
이렇게 코딩 한번 해봅시다.
그러면 신기하게 둘다 A가 나왔습니다.
즉 아스키코드 65 값은 문자로 A를 뜻한다는 사실을 알 수 있습니다.
반대로 %c를 %d로 바꿔주면 A의 아스키코드 값이 나올것 입니다.
짠! 정말 입니다. 쩌네요.
마지막으로 제어문자를 할겁니다.
표로 끝내버렸습니다.
흠..
끄...읕?
'언어 > C언어' 카테고리의 다른 글
[C 언어] 7. 제어문 (0) | 2024.04.14 |
---|---|
[C 언어] call by value, call by reference 알아보기 (0) | 2024.04.14 |
[C 언어] 5. 변수와 자료형(더 자세히1) (0) | 2024.04.14 |
[C 언어] 번외) 프로그램 개발 과정 (0) | 2024.04.14 |
[C 언어] 4. printf() 와 scanf() (0) | 2024.04.14 |