초보c언어 값의 범위에 대한 질문입니다.
가온
c언어 값의 범위 c언어 기초공부를 하다가 값의 범위 공식이 있었는데,, 생각이 나질 않아서
질문합니다.
질문 내용 :
c언어변수에 대해서공부를 하는중에지금c의 숫자변수 형식에 대해 공부를 하는중
메모리 양의 따른 값의 범위를 구하는게 생각이 나질 않아서 질문합니다.
!! 16비트 데이터 구조를 가지고 있는 컴퓨터로 예를 들때 !!
문자형 char 1byte , 정수형 int는 2byte , long형은 4byte , double 8byte라고 알고있습니다
32bit 데이터 구조를 가지고 있는 컴퓨터는 위의 설명의 2배씩 byte차지한다는것도 알고있습니다.
__________________________________________________
16비트데이터 구조를 가지고 있는 컴퓨터라 가상하고
__________________________________________________
문자형 char 는1byte 차지하는데 부호있는 char였을때 값의 범위가 -127~128까지라고 나와있습니다.
위의 값의 범위를 구하는 공식을 알고싶습니다. 군대가기전에 컴개시간에 배운것 같은데..
기억이 나질 않네요;;
도와주세요..!
-
무슬
컴파일러 별로 자료형의 표현범위가 다릅니다
현재 C99 표준안으로 따지자면
Char ≤ Short ≤ int ≤ long ≤ long long 이렇게 표현됩니다.
자료형의 표현범위 최소값과 최대값이 다른이유는
2진수 표현방식 때문이라고나 할까요?
예를 들어 char 형의 최대값은 127 입니다
이걸 2진수로 풀어놓으면 01111111 이죠.
그럼 음수는 -127 최소값이 되야겠죠?
그러나 -127은 2진수로 10000001 입니다.
-
진솔
컴파일러마다 다릅니다. limits.h 파일에 보면
#define INT_MAX 2147483647
위와 같은 정의들이 있습니다. -
마호
char는 8비트 1비트는 0과 1이 들어감, 고로...
2^8 = 256, 부호가 있을 경우 정확히 반반임으로 0을 포함하면 -127~128
int는 최소 16비트 2바이트가 보장되 있고
long은 최소 32비트 4바이트가 보장되 있고
double은 8바이트가 보장되 있는걸로 알고 있습니다.
기계에 따라 long이 8바이트 일수도, 4바이트일수도 있고
int도 2바이트인 경우, 4바이트인 경우, 때에따라 8바이트인 경우가 생길수 있습니다.
(실제