본문 바로가기
언어/C언어

[C 언어] 6. 변수와 자료형(더 자세히2)

by 천무지 2024. 4. 14.
반응형

며칠 글을 안썻습니다.

 

인제 쓸게요.

 

컴퓨터에서 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의 아스키코드 값이 나올것 입니다.

 

 

 

짠!  정말 입니다. 쩌네요.

 

 

 

마지막으로 제어문자를 할겁니다.

 

 

표로 끝내버렸습니다.

 

 

 

 

 

 

흠..

 

 

 

 

 

 

 

 

 

끄...읕?

 

 

 

 

 

 

반응형