| prosthetics |
<1>
정수 7과 문자형 7을 구분하기 위해서 ''(홑 따옴표)를 사용합니다.
아래와 같이 코딩하시면 원하시는 1이 출력됩니다.
#include <stdio.h>
int main(void)
{
printf("%d\n ", sizeof('7'));
return 0;
}
<2> 질문하신 내용이 이해가 잘 안되서 포괄적으로 답하겠습니다.
int형 변수에 129를 저장하면 00000000 00000000 00000000 10000001 라는 32비트로 표현됩니다.
이때에 부호비트는 최상위 비트인 맨 왼쪽의 0입니다.
이것을 char변수에 넣으려니 char변수는 1바이트라서 맨 오른쪽의 1바이트만 복사가 됩니다.
즉, 1 0000001 인 최하위 8바이트 값을 ch가 가지게 되는 것입니다.
이때에 부호비트는 맨 왼쪽의 1이 됩니다.
컴퓨터는 '2의보수 표기법'이라는 부호 체계를 가집니다.
아시다시피 2의보수 표기법에서는 최상위 비트가 부호비트로, 1이면 음수, 0이면 양수입니다.
또한 음수를 2의보수화 하면 같은 절대값을 가지는 양수로 변하고
양수를 2의 보수화 하면 같은 절대값을 가지는 음수로 변합니다.
2의 보수화 하는 방법 여러가지가 있는데 그중 가장 간단한 방법을 소개합니다.
1단계 : 1을 0으로, 0은 1로 바꿔주세요.
2단계 : 1단계의 결과물에 1을 더해주세요.
앞서 알려드린 방법으로 10000001를 2의보수화하면
1단계 : 0111 1110
2단계 : 0111 1111
결과는 127입니다.
즉, 1000 0001은 -127인 것입니다.
참고로 부호비트가 1이면 해당 자리수 값에 -를 붙였다고 생각하셔도 됩니다.
1000 0001이니 (-128+1)로 계산하시면 되지요. |
2011/11/27 |
|