자료형
일정 길이(byte 단위의 크기)의 메모리에
저장된 정보를 해석하는 방법
상수 : 정해진 수, 변화가 없음.
변수 : 변하는 수, 정해지지 않은 수
변수의 선언은 메모리의 확보를 의미함.
정수형(고정소수점) : 1234.0, 100.0 과 같이
소수점이 고정되어 있음.(실제는 정수만 표현)
char(1byte)
short(2byte)
int(4byte), long(4byte),
long long int(8byte)
실수형(부동소수점) : 1.234, 12.34, 123.4와 같이
소수점의 위치가 변화.
float((4byte)
double(8byte)
float의 경우 소수점 이하 표현이 6자리를 넘어가면
자료의 신뢰성이 떨어진다.
그러므로 실수형을 사용할 경우
소수점 15자리까지 유효한 double형을 사용한다.
보수와 음수표현
컴퓨터는 보수를 사용하여 음수를 표현하고
그 보수를 사용하여 뺄셈을 한다.
2진수 0011은 10진수 '3'이다.
맨 왼쪽부터 10진수 8,4,2,1로 계산되고
2+1을 하면 3이 된다.
처음에 음수를 표현할 때는
맨 왼쪽 비트를 1로 표시하면 음수,
0으로 표시하면 양수로 표현되었는데
그렇다면 위의 2진수 0011의
맨 왼쪽 비트를 1로 바꾸면 1011이 되고
이 수가 '-3'으로 표현되었던 것이다
하지만 이 방식은 현재 사용하지 않는다.
왜냐하면 이런 경우 0 수를
표현할 경우 2진수 0000은 +0,
1000은 -0이라는 숫자로 표현되게 되어
경우의 수가 낭비되어 컴퓨터는 더 많은 수를
표현하기 위해서 2의 보수를 사용한다.
2의보수를 구하는 방법은
1의 보수에 1의 값을 더하면
2의 보수를 구할 수 있다.
1의 보수는 0은 1로, 1은 0으로 바꾸면 된다.
그래서 2진수 0011의 2의 보수를 구해보면
먼저 1의 보수를 구하면 되는데
0을 1로, 1은 0으로 바꾸면
2진수 1100이 되고 여기에 1의 값을 더하면
2의 보수가 되는 것이다.
그러면 2진수 1101이 되고 이 값이
10진수 3의 2의 보수가 된다.
실제로 0011(3)의 값과
1101(-3)의 값을 서로 더해보면
0이 되는 것을 알 수 있다.
계산 마지막 5째 자리1은
자리범위를 초과하므로 버려지게 된다.
여기서 중요한 것은 2진수 1101을
부호가 있는 자료형(signed)으로 보면
-3으로 해석될 수 있지만
부호가 없는 자료형(unsigned)로 본다면
13의 수로 해석될 수 있다.
2진수 1101을 계산해보면
8+4+1 = 13이기 때문이다.
따라서 값의 정보는 하나지만
이 정보를 어떻게 해석하느냐에 따라서
그 값이 다르게 해석될 수 있다.
** 잘못알고 있는 것이 있으면 댓글로 알려주시면 감사하겠습니다! **
'프로그래밍 > C언어' 카테고리의 다른 글
단순 대입 연산자 (0) | 2018.06.28 |
---|---|
비트연산자 (0) | 2018.06.28 |
형식 문자열 입출력 함수 ( 스캔셋 ) (3) (0) | 2018.06.07 |
형식 문자열 입출력 함수 ( scanf ) (2) (0) | 2018.06.05 |
형식 문자열 입출력 함수 ( printf ) (1) (0) | 2018.06.04 |