728x90
반응형
폰 노이만 구조
- CPU, 메인메모리, 입출력 장치로 구성됨
버스 (Bus)
- CPU와 메인 메모리 사이를 연결하는 통로
- Address bus : 주소를 실어 나르는 통로
- Data bus : 데이터를 실어 나르는 통로
- Control bus : 데이터를 쓸지, 데이터를 읽어올 지 제어
- Address bus : 주소를 실어 나르는 통로
워드 (Word)
CPU와 메모리 사이의 데이터 전송 단위를 워드라 부른다.
운영체제마다 워드의 기준이 달라진다.
버스와 워드의 관계
- 워드의 크기에 따라 메모리 용량도 달라진다.
워드의 크기가 32비트라면 지정할 수 있는 주소의 범위는 0에서 2^32까지, 4기가 바이트이다.
주소 지정 방식
- 바이트 주소 단위 지정
- 워드 단위 주소 단위 지정
프로그램 실행 시 메모리 구조
- 일반적으로 하위 주소에서 상위 주소로 올라가면서 코드, 데이터, 스택, 힙 순으로 배치
- 코드 : 고정적인 코드 값이 저장된다.
- 데이터 : 데이터가 저장된다.
- 스택 : 지역변수, 전역변수가 저장된다.
- 힙 : 동적변수가 저장된다. - 메모리에서 필요한 만큼 사용할 수 있도록 한다.
심볼 테이블
- 로더에 의해 변수의 메모리 위치가 결정되면 링커는 심볼테이블을 만듦.
- 심볼은 변수 이름을 의미
컴파일러를 위한 심볼 테이블임.
메모리에 할당되는 것
- 심볼은 변수 이름을 의미
대입문
변수에 값을 넣는 명령문으로 대입문이라고 한다.
왼쪽은 값을 넣는 공간이고,
오른 쪽은 넣는 값을 의미한다.
int A;
int B;
B = 10;
A = B;
# L- value
- 모든 변수는 L-Value이다.
# R- value
- 상수는 모두 R- value 이다.
- 주소를 알수 없는 것을 R- value라고 한다.
- 대입문의 오른쪽에 위치해야 오류가 발생하지 않는다.
주소를 알 수 없기에, 값을 저장받을 수 없기 때문이다.
변수의 초기화
초기화 되지 않는 변수는 쓰레기 값이 들어있다.
변수는 초기화를 거쳐야지 Valid 한 변수로 위치가 된다.
ex) 반복문에서 값을 할당해줄 때 변수의 초기화를 거쳐야 한다.
int sum;
// 변수 초기화 과정
// sum = 0;
for (i = 0 ; i < 10; i ++) {
sum = i
}
해당 코드의 결과 값은 예상하지 못한 결과가 반환된다.
이유, 변수(sum)의 쓰레기 값으로 연산을 진행하기 때문이다.
산술 연산자
- 데이터 타입의 크기가 큰 쪽으로 연산이 결정된다.
- 정수 연산 실수 = 실수를 반환
- 정수 연산 실수 = 실수를 반환
산술연산과 형변환
- 피연산자의 자료형이 서로 다르면 연산 과정에서 형변환이 일어난다.
int a; double b;
a = 5 / 10;
b = 5 / 10.0;
증감 연산자
중가 연산자 : 변수에 1을 더한다.
감소 연산자 : 변수에 1을 뺀다.
전위 증가 : 전위 증가(++a)는 미리 증가 시킨다.
후위 증가 : 후위 증가(a++)는 나중에 증가 시킨다.
관계 연산자 사용 시 주의 사항
- 부동 소수끼리 비교하지 말자 (ex: double == int를 지양해라 )
- 연산과정에서 항상 오차가 있기 때문이다.
- 비트수가 제한되어 있기 때문에 결과 값이 반올림이 되거나 잘리기 때문이다.
- 차라리 두수의 차이가 오차 범위안에 있는지 확인하는 코드를 사용할것
논리 연산자 예제
- 왼쪽부터 순차적으로 해석한다.
-10 <= x <= 20 으로 코드를 작성하면, 원하는 대로 값이 나오지 않는다.
그렇기에, x >= -10 && x <= 10으로 And를 사용해 원하는 값을 찾음.
단축 회로 연산
단축 회로 연산 시에는 증감식을 넣는 것을 지양하는 것을 권장하라고 교수님이 말씀해주셨다.
728x90
반응형
'CS 대학강의' 카테고리의 다른 글
[CS 1-2 | 이산수학] 중첩 한정기호 3주차 (0) | 2022.09.22 |
---|---|
[CS 1-2 | 대학생을 위한 실용금융] 환율과 주식 3주차 (0) | 2022.09.21 |
[CS 1-2 | 아카데믹 글쓰기] 글쓰기를 하는 목적 1주차 (0) | 2022.09.19 |
[CS 1-2 | 시스템 프로그래밍 기초] 변수의 활용 3주차 (0) | 2022.09.16 |
프로그램 설계 방법론 -#03 [MVC 아키텍처 설계] (0) | 2022.09.16 |