반응형

a=a+2;

printf("%c",a);

이번시간에는 자료형을 공부하고 실습을 주로했습니다.

자료형을 공부하면서 바이트 비트와 같은 단위가 많이 나왔는데 이부분을 정리해보겠습니다.

 

.

컴퓨터는 0과 1밖에 연산하지 못합니다. 컴퓨터 공학에서는 많이 다루는 내용으로 컴퓨터의 메모리는 콘덴서로 이루어 졌있습니다. 콘덴서는 축전기를 뜻하고 축전기는 전기를 모으고 방출을 하는 역활을 하는데 이떄 축전기가 차있으면 컴퓨터는 1이라고 비어 있으면 0이라고 인식을 하기 때문입니다. 

비트는 하나의 콘덴서를 의미한다고 생각하면 쉽습니다.

비트가 8개 모이면 1바이트가 됩니다.

 

진수변환에 대해서는 저도 어려웠던 부분입니다. 잘정리가 된 블로그가 있습니다.

https://xn--ex3bt1ov9l.kr/5

 

2진수 8진수 16진수 10진수 변환

2진수(binary) - 0~1을 나타낼 수 있음 - 가장 큰 수 1의 값은 : 1 - 따라서 2진수는 1개의 비트만 있으면 모두 표현 가능 8진수(octal) - 0~7을 나타낼 수 있음 - 가장 큰 수 7의 이진수 값은 : 111 - 따라서 8진..

xn--ex3bt1ov9l.kr

 

언더 플로와 오버플로

 

약간의 저의 생각을 적으면...

c언어는 스택이라는 자료구조로 데이터가 쌓이게 되는데 오버플로를 이용해서 프로그램에 오류를 발생시티는 해킹기법인 스택 오버플로우 공격이 있습니다. 오버 플로우는 우리가 배우는 모든 언어에 공격이 가능합니다. C언어는 스택이라는 자료구조를 사용합니다. 반면에 자바는 힙이라는 자료구조를 사용하는데 그래서 자바에서는 힙 오버플로라는 공격이 존재하죠 해킹뿐만 아니라 개잘에 있어서도 오버플로를 발생하지 않개 예외처리하거나 미리 오버플로를 방치하는 코드가 있어야합니다. 안그러면 프로그램음 오류를 발생시킵니다.

우리는 자료형의 크기를 배웠습니다. 예를 들어서 char형을 예로 들어 보겠습니다. char 은 1byte의 크기를 가집니다.

1바이트로는 01111111 즉 127까지 나타낼수 있는데 127을 넘어가면 다시 초기 값인 -128이 나타나고 반대로 -128은 127이되는 언더플로 현상이 나타나게 됩니다.

 

 

 1의 보수 와 부동 소수점

 

011111111111 +1 =32768

100000000000 = -32768

1의 보수를 취하게 되면 오버플로에의해서 -값으로 변하는 것을 알수 있습니다.

 

여기서 가장 앞자리는 컴퓨터에서 부호 비트로 사용이 되기 때문입니다.

실수형 자료형의 비트를 확인해보면

부호비트와 지수부 가수부로 나뉘는 것을 알 수 있습니다.

 

이번 레포트에 대해서 약간의 팁을 적어보겠습니다.

1. 포인터의 원리와 c언어가 변수를 저장하는 방법

모든 프로그램은 변수를 메모리에 저장을 합니다.

이때 포인터란 변수가 저장된 메모리의 위치를 말합니다.

 

printf(1+1);

int a = 10;
printf(a);

이렇게 코드를 짜면 아마 오류가 일어날 가능성이 높습니다.

a는 변수 10이 아닌 변수 10이 저장된 메모리의 위치를 저장합니다.

메모리는 2진법으로 저장이 되어 있습니다.

00001010 이렇게 저장이되는데 이걸 출력하라고 하면 이것이 실수를 출력하라는 건지 정수를 출력하는 것인지 우리는 정의 해주어야 합니다.

그래서 서식 지정자가 존재하죠

그래서 정수형으로 변수를 선언 했으니 정수형을 출력하도록 조치를 해주어야 합니다.

printf("%d",10);

이런 식으로 처리를 해주어야 프로그램이 올바르게 실행이 됩니다.

 

앞서 변수는 메모리 즉 2진수로 저장된다고 말했습니다.

char 변수를 예로 들어 보겠습니다.

char a= 'A'

이렇게 코드를 코드를 작성해주면 변수 a에는 무엇이 저장될까요?

a에는 a의 변수를 저장한 메모리주소이고 그 메모리 주소의 값은 이진의 형태인 1000001 로 저장이 됩니다.

즉 컴퓨터는 비트 연산을 합니다. 그래서 형변환 없이 정수 2를 더해주면1000011로 변하게 됩니다.

그리고

a=a+2;
printf("%c",a)

이런식으로 문자를 출력하도록 서식 지정자를 정해주면

1. a의 메모리 값을 불러온다.

2. 메모리 값을 문자로 출력하다.

로 우리가 원하는 값을 출력할 수 있습니다.

 

혹시 카이사르 암호, 시저 암호에 대해서 알고 계신가요?

궁금하다면 한번 찾아보고 이번에 배운 내용과 수학적 원리를 이용하면 쉽게 해독하는 프로그램을 제작할 수 있습니다.

반응형
Posted by 53C
,
반응형

음... 대학교 레포트를 처음 적성해봐서 어느정도 완성도로 작성을 하고 제출해야하는지 많은 고민을 한 것 같습니다.

저에게 가장 도움을 준 것은 고등학교 시절 방과후 학교에서 배운 하루 동안 배운내용을 정리해서 보고서를 작성하는게 저에게 많은 도움이 되었다고 생각을 합니다.

 

저는 일단 보고서 양식을 제작 했습니다. 다른 학교의 보고서 제출 양식을 참고해서 저만의 보고서 양식을 만들었습니다. 이렇게 하면 레포트쓸 때마다. 양식을 가져와서 적기만 하면 되서 많이 편했습니다.

 

 

보고서 양식 - 복사본.hwp
0.09MB

혹시 더 좋은 레포트 양식이 있으신 분은 공유 부탁드립니다.ㅠㅜ

 

목차를 적고...

 

프로그램 특성상 보고서 많은 글을 쓰기는 힘들었습니다.

그래서 처는 윈도우에 캡쳐도구를 이용해서 소스파일을 그림파일로 제출을 했습니다.

그리고 제 소스와 출력을 복사한 후에 레포트에 올리고 그리고 제가 만든 프로그램이 왜 이렇게 작동하는지 추가 설명을 붙였습니다.

변수 a와 b를 선언해서....

그리고 오류가 뜨면 오류도 캡쳐를 했는데

프로그램을 제작하면서 오류가 자주 뜨는데 

오류가 뜨면 그창도 캡쳐하고 오류가 뜨는 원인도 찾아서 적으면 더 많은 내용을 적을수 있었습니다!!

 

감사합니다!

 

3.23

레포트2.hwp
0.25MB

반응형
Posted by 53C
,
반응형

1. 비주얼 스튜디오에서 c언어로 컴파일 하는 법

 

이상태가 정상인 상태

 

소스파일 오른쪽클릭

 

여기서 파랑색 주의

무조건 확장자명을 c로 바꿔야함

이 상태가 정상

 

 

 

 

2.  디버깅이 안되는 경우

 

Microsoft 기호 서버 선택되어 있어야함

 

반응형
Posted by 53C
,
반응형

1. 자료형이란?

2. 연산자

3. 이스케이프 문자

4. 서식 지정자

 

 

 

 

 

1. 자료형이란?

 

자료형이란 변수의 종류를 의미한다.

1. 변수 선언 == 메모리 할당

2. 변수 초기화 == 변수에 상수 입력

3. 각 자료형은 각 다른 메모리 크기를 가진다.

4. 연산은 같은 자료형 끼리만 가능하다. (문자형 제외)

 

 

2. 연산자

연산자는 크게 분류할 수 있다.

 

 

이때

이런식으로 산술 연산자를 사용할 수 있다.

 

3. 오류학습 및 팁

 

1) 다른 자료형끼리 더했을떄

 

 

이런 오류가 발생할 수 있다.

 

그래서 만약 실수와 정수를 더해야 할떄는 정수를 실수로 변환해주는 형변환을 거쳐야한다.

 

2) 가독성

세미콜론(;)은 명령어를 나누어 주는 역활을 한다. 그래서 위와 같이 코딩을 해도 출력은 가능하나 다른 사람이나 내가 코드를 보기 매우 불편하다는 점이 있다.

 

보기 매우 편하다.

 

3. ctrl+space

 

 

필요한 명령어의 몇글자를 치고 ctrl+space를 누르면 관련된 명령어가 나온다. 매우 편하다.

 

4. 이스케이프 문자

특수한 문자를 표시해주는 문자

 

 

4. 서식 지정자

 

반응형
Posted by 53C
,