--
이중 중첩 for문을 사용하였다.
15번째줄에서 16번동안 연속해서 *ucpdata(iNum)의 메모리속의 내용을 출력하라 명령하였고. ( ++ucpdata 로 한칸한칸 메모리를 옮겨가며)
for문에서 벗어나면 \n으로 줄바꿈명령을 수행한 후에 13 번째줄로 돌아가 다시금 ucpdata의 메모리를 읽고있다.
이 *.c문을 비주얼스투디오로 열어보았다.
3개의 공간으로 나누어서 나오게된다.
왼쪽은 '주소값' 중간은 명령한 '출력내용(iNum)' 오른쪽은 '아스키코드'이다.
*그런데 4D와 5A는 아스키코드 MZ로 출력이 확인되는데 90 00 03 등등... 은 .으로 나온다.
아스키코드에서는 31이하의 제어문자는 -> . (ex:00)
아스키코드는 8bit 이기때문에 8bit이상(0~127)의 문자도 -> . (ex:FF,90)
구냥 코드 읽고 이해하자
일단 29번째줄 uCpdata>130 (메모리의 정수가 127보다 크면 ->.을 출력한다.)
밑에도 똑같이 이해하쟝 ^^~
%c = 1개의 Character를 입력받는다. 띄어쓰기, 엔터 등도 모두 1글자 이므로 %c로 받을 수 있다.
코드대로
왼쪽은 Address 문! 띄우고 *ucpdate(iNum)메모리 출력문! 띄우고 오른쪽은 아스키코드입력란!
이제 이걸 DOS창으로 띄워보자!
위에 코드 ㅠㅠ... *ucpdata = '.'; 이걸 쓰면 안댄...다..
printf(".");로 고치자!
31번째줄..34번째줄!
그리고 37번째줄에 else 를 추가하여 printf문을 else문 안에 써주자..
이롷게 ㅠㅠ..
이렇게 코드를 수정하자...ㅋㅋ...(리눅스에선 됐는데 도스로 옮겨오니 안댐... 코드를 잘못짠것 같다ㅠㅠ) 위에랑 비교해서 틀린점 확인!
출력!
-과제과제!-
fnum속에 있는 메모리를 출력해보자.
fnum은 3.25이다. 그런데 왜 00 00 50 40 이 나왔을까?
여기서 알아두고 가야할것은 리틀 엔디언 방식이기 때문에 메모리가 뒤집혀 있다는 것이다.
원래
40 |
50 |
00 |
00 |
의 내용이
00 |
00 |
50 |
40 |
이렇게 출력된 것.
23.125
의 소수가 있다고 생각하자.
23.125를 2진수로 바꾸면 -> 10111.001가 된다.
10111.001 에서 소숫점을 앞으로 옮겨 1.0111001 *2^4 (2^4승을하면 소숫점이 10111.001로 돌아옴)
(2의 4승인걸 알았으니)
4 + 127[책에적혀있다구함]을한다. 그럼 131이 나오는데 이것을 2진수로 옮기면
1 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
이것을 적으면
[부호] [ 지수부 ][나머지 쭉 가수부->
0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | 1… |
을 4단위씩끊어서
0 |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
[ 4 ][ 1 ][ B ][ 9 ]
가 나오게 된다! 그렇다면 이제 다 구한것인데
41 |
B9 |
00 |
00 |
00 |
00 |
B9 |
41 |
로 메모리는 저장된다!!
->여기서 확인할 수 있는것은 printf가 변수 = 함수 이렇게 올수 있다는것,
심볼테이블에서 심볼명에 변수가 아닌 함수도 추가될 수 있다.
자료형 |
심볼명(변수명) |
주소값 |
int,double…… |
변수,함수… |
주소값 |
이렇게 알 수 있는것은 함수도 주소값이 있다는 것!
그렇다면 함수의 주소를 출력해보자.
->여기서 확인 가능한 것은 함수끼리의 주소값이 비슷~ 하다
004010…
0040……
이렇듯 알 수 있는 것은 함수끼리 주소가 모여있고 변수끼리 주소가 모여있다는 것!!
3번째에 출력된 변수는 0040… 이 아닌 00000064가 되어있다~ (함수가 아니라서!)
(차차 계속 나와서 지금은 이렇게만 알고있으면 된다는데 ㅠㅠ..)
man(메뉴얼의 단축어)
(리눅스에서 'man 알고싶은것' 을치면 메뉴얼이 뜬다.)
(리눅스에서의 찾기 (Ctrl+F)의 기능 = '/찾을단어')
man -3 printf
책의 예문을 보면 int main(void){} 라고 써져있는데 void는 인자가 없다는 뜻이기에 생략 가능하다.
'2014 C > 3월' 카테고리의 다른 글
2014.03.24 (0) | 2014.03.24 |
---|---|
2014.03.21 (0) | 2014.03.21 |
2014.03.19 (0) | 2014.03.19 |
2014.03.18_2 (0) | 2014.03.18 |
2014.03.18 (0) | 2014.03.18 |