진법 변환
MSB : 최상위 비트를 지칭하며, 변환된 진수에서 영향력이 가장 큼.
- 음수를 표현할 시, 부호 비트로 사용된다.
LSB: 최하위 비트를 지칭하며, 변환된 진수에서 영향력이 가장 작음.
진법 변환 (2진수 -> 16진수)
16진수는 사람이 알아보기 위한 수로
2진수로 표현 시 너무 길어 종종 16진수로 표현한다.
- 자릿수가 부족한 경우 제로 패딩으로 0으로 채워넣는다.

정수형 타입은 한번에 32bit를 처리하니깐, 나머지 빈 자리는 제로패딩으로 0으로 채워넣는다.
2진수 음수표현
MSB를 부호 비트로 사용해,
양수는 0, 음수는 1로 표현
But.. 2진수 음수표현으로 연산을 하면, 잘못된 연산 결과를 얻을 수 있음.

보수를 통한 2진수 음수표현
- 1의 보수
1이 되도록 만드는 수
(각 비트를 0에서 1로, 1에서 0으로 바꾼 것과 같음)
1의 보수를 이용한 예제 연산
-3 -4 = (-3) + (-4)
1의 보수 표현은 각각 1100, 1011
연산 후 overflow가 발생한 경우, 맨 뒷자리에서 1을 더해 줌
1의 보수 표현으로 계산한 값은 결과가 동일 (-7)
But.. 1의 보수의 문제점 - 1의 보수의 한계
0을 표현하는 방법이 2가지 존재함.
0000 0000 (+0), 1111 1111 (-0) - 2의 보수
1의 보수에 +1을 한 수
2의 보수를 이용한 예제 연산
-3 -4 = (-3) + (-4)
2의 보수 표현은 각각 1101, 1100
연산 후 overflow가 발생한 경우, 해당 비트를 무시
결과 값은, 1001인데, 첫번 째 비트는 음수 부호를 의미
2의 보수를 이용해 변환하면 1111 = -7
0을 2의 보수로 표현하면,
+0은 0000 0000 = 0이고, -0은 1 0000 0000으로 되어 overflow로 인해 0000 0000 = +0이 됨
결과적으로 컴퓨터는 2의 보수 표현을 이용해서 뺄셈을 덧셈으로 계산함
컴퓨터의 정수 표현
- 정수는 32bit를 사용해 표현한다.
남는 bit는 제로 패딩으로 빈 자리수를 채운다. - 음수는 2의 보수 형태로 저장한다.
컴퓨터의 소수점 (실수) 표현
- float 타입의 소수점은 32bit를 사용해 표현한다
- double 타입의 소수점은 64bit를 사용해 표현한다.
부동 소수점 데이터 저장에러
- overflow
비트로 저장하기에 너무 클 경우 발생한다. - underflow
비트로 저장하기에 너무 작을 경우 발생한다.
(0.00000000001)
주어진 비트보다 더 많은 비트를 요구할 때 주어진 비트에서
데이터 값이 짤려서 저장되는 경우이다.

시프기 강의 목적
C언어의 특성인 컴퓨터에 대한 깊은 이해를 요구하는 학문으로써
본질을 제대로 학습할 수 있게 해준다.
그렇기에, 시프기를 토대로 C언어에 대한 깊은 곳까지 탐구해서
컴퓨터의 기초부터 메모리까지 심화된 부분까지 다룰 수 있는 존재가 되도록 하는 것이 교수님의 강의 목적이라고 하셨다.
그렇기에, 강의 중간중간 이것까지 알아야 해? 라는 생각이 간혹들긴 할 수도 있지만,
나중에 고학년이 되어 전공심화를 배울 때 이번의 C언어 깊은 이해를 토대로
쉽고 수월하게 이해할 수 있게된다고 교수님께서 말씀해주셨다.
변수
- 변수는 선언을 통해 메모리에 저장공간을 확보하고, 대입연산자 (=)을 통해 변수의 값을 저장한다.
- 일반 변수를 선언해서 활용하면 stack으로 지역변수로 분류된다
- 변수는 전역변수, 지역변수, 동적변수 등등이 있다.
- 변수는 타입을 정의할 수 있으며, [int : 정수 float : 실수 char : 문자열 등등]으로 정의가 가능하다.
아래는 공식적으로 규정된 변수 선언규칙이다.

세미콜론 - ;
- 컴파일러가 코드 한 줄의 끝이라고 생각하는 지점을 토대로
세미콜론을 보고 판단한다.
변수의 이름
- 대소문자에 민감, 숫자로 시작이 불가능하다.
- 가독성이 중요하다.
- 밑줄 문자로 시작하면, 시스템 라이브러리와 충돌 우려 가능성이 크다.
- C언어는 변수의 작명규칙이 특히나 구분되지 않아서 이름짓기가 어렵다.
그치만, 코드를 구성하는 상황에 따라 적합한 변수 작명 규칙을 지정만 해둔다면, 이름을 짓기 수월할 것이다.
변수이름 짓기는 정해진 규칙이 없고, 상황(회사)에 따라 적합한 규칙을 사용하는게 현실이다.
그렇기에, 우리 (시프기)수업에선 교수님이 지정해주신 변수 이름 규칙을 이용하겠다.
문자형 변수 - char
- 1Byte : 8bit로 저장된다.
- 데이터 저장범위 : -128 ~ +127 으로 정수로 할당되어 있다.
- 컴파일러는 문자를 0 ~ 127 사이로 변환하여 "아스키 코드"를 토대로 표현한다.
- %c : 문자, %d : 정수
- "탈출문자" + 영어 1문자를 묶음으로 문자형 변수로 지정되어 있다.
- \n과 같이 newline 기능을 수행하도록 문자형 변수가 선언되어 있다.
정수형 변수 - int
int : 4 byte
long : 4byte
long long
변수의 출력변수 형태를 지정함에 따라 출력이 달라짐.

실수형 변수
유효숫자가 클 수록 더 정확한 표현가능
변수를 상수처럼 사용 - const
초기값 지정후, 새로운 값을 넣을 수 없음.
형변환 - cast
변수의 타입변환이다.
- 명시적 형변환
지정한 type에 맞춰서 형변환을 함.

명시적으로 연산에 따른 type으로 지정해줘야 한다.
- 암시적 형변환 :
큰 type에 맞춰서 자동으로 형변환을 진행한다.

데이터 크기를 구할 때 사용 - siseof
- - 데이터의 크기를 구할 때 사용한다.
- siseof 데이터의 크기는 바이트(byte) 단위로 계산된다.
'CS 대학강의' 카테고리의 다른 글
프로그램 설계 방법론 -#03 [MVC 아키텍처 설계] (0) | 2022.09.16 |
---|---|
[CS 1-2 | 대학생을 위한 실용금융] 금융의 주축, 금리 1주차 (0) | 2022.09.14 |
[CS 1-2 | 이산수학] 논리 표현의 시작, 명제 함수 2주차 (0) | 2022.09.13 |
프로그램 설계 방법론 -#01 [class 기초실행] (0) | 2022.09.08 |
프로그램 설계 방법론 -#02 [기초 클래스 구성] (0) | 2022.09.08 |