[CS : 컴퓨터 구조] C 언어의 컴파일 과정
·
Computer Science/컴퓨터 구조
1) 전처리기(preprocessor) ( test.c → test.i ) 전처리(preprocess)과정을 실행 전처리 과정 (preprocessing) 본격적으로 컴파일하기 전에 처리할 작업들 외부에 선언된 다양한 소스코드, 라이브러리 포함(e.g. #include) 프로그래밍의 편의를 위해 작성된 매크로 변환(e.g. #define) 컴파일할 영역 명시(e.g. #if, #ifdef, ···) 2) 컴파일러(compiler) ( test.i → test.s ) 컴파일(compile)과정을 실행 컴파일 과정(compiling) 전처리가 완료 되어도 여전히 소스코드이다. 전처리 완료된 소스코드를 저급 언어(어셈블리 언어)로 변환 3) 어셈블러(asembler) ( test.s → test.o ) 어셈블..
[CS : 컴퓨터 구조] 03-2 명령어의 구조
·
Computer Science/컴퓨터 구조
T) 명령어의 구조 T1) 명령어란? ' 무엇을 대상으로 무엇을 수행하라'라는 것 ex) "철수야 미역국 좀 끓여라" 더해라 100과 120을 뺴라 메모리 32번지 안의 값과 메모리 33번지 안의 값을 저장해라 10을 메모리 128번지에 수행할 연산 연산에 사용될 데이터 혹은 주소필드( 연산에 사용될 데이터가 저장된 위치 ) T2) 명령어의 구성 저장해라 10을 메모리 128번지에 A) 연산코드 B) 오퍼랜드 B) 오퍼랜드 오퍼랜드에는 연산에 사용될 데이터 혹은 연산에 사용될 데이터가 저장된 위치(주소필드)가 들어있다. 경우에 따라 없는 경우 여러개가 들어있는 경우가 있을 수 있다. A) 연산코드 (연산코드의 종류와 생김새는 CPU마다 다르다) 종류 : ① 데이터전송 ② 산술 / 논리 연산 ③ 제어 흐름..
[CS : 컴퓨터 구조] 명령어 : 03-1 소스코드와 명령어
·
Computer Science/컴퓨터 구조
고급언어 : 개발자가 이해하기 쉽게 만든 언어 저급언어 : 컴퓨터가 이해하고 실행하는 언어 저급언어 기계어 · 0과 1로 이루어진 명령어로 구성된 저급언어 · 16진수로 표현된 기계어 어셈블리어 · 0과 1로 이루어진 기계어를 읽기 편한 형태로 번역한 저급언어 ※ 개발자가 작성한 코드를 컴퓨터가 바로 읽거나 쓰기를 할 수 없는 것은 고급언어이기 때문이다. 그렇기때문에 저급언어로 변환해주어야한다. (고급언어) 컴파일 언어와 인터프리트 언어 A) 컴파일 언어 컴파일 언어로 작성된 소스코드는 컴파일러에 의해 저급언어로 변환되고(변환하는 과정을 컴파일이라고한다.) 컴파일 결과로 저급언어인 목적코드가 생성된다. 소스 코드 컴파일 중 오류가 발생하면 소스 코드 전체가 실행되지 않는다. B) 인터프리터 언어 인터프리..
[CS : 컴퓨터 구조] 데이터 : 02-2 0과 1로 문자를 표현하는 방법
·
Computer Science/컴퓨터 구조
A) 문자 집합과 B) 인코딩 문자 집합(character set) : 컴퓨터가 이해 할 수 있는 문자의 모음 인코딩(encoding) : 코드화하는 과정, 문자를 0과 1로 이루어진 문자 코드로 변환하는 과정 디코딩(decoding) : 코드를 해석하는 과정, 0과 1로 표현된 문자 코드로 문자로 변환하는 과정 A) 문자집합 : 아스키 코드 초창기 문자 집합 중 하나로써 알파벳, 아라비아 숫자, 일부 특수 문자 및 제어문자 7비트로 하나의 문자 표현(8비트 중 1비트는 오류 검출을 위해 사용되는 패리트 비트(parity bit) → (표현할 수 있는 문자의 개수는 2의7승 = 128개) c.f.) 코드 포인트(code point) == 문자에 부여된 값, A == 65, a == 97 간단한 인코딩이라..
[CS : 컴퓨터 구조] 데이터 : 02-1 0과 1로 숫자를 표현하는 방법
·
Computer Science/컴퓨터 구조
02-1 0과 1로 숫자를 표현하는 방법 1) 정보단위 비트(bit) : 0과 1을 표현하는 가장 작은 정보 단위 ex) 전구 : 켜짐 · 꺼짐 n비트로 2ⁿ가지의 저옵 표현 가능 프로그램은 수많은 비트로 이루어져 있다. 다만 표현 시 비트보다 더 큰 다위를 사용한다.(ex 바이트, 메가바이트, 기가바이트, 테라바이트 ···) 더보기 1바이트(1byte) : 8비트(8bit) 1킬로바이트(1KB) : 1,000 바이트(1,000 byte) 1메가 바이트(1MB) : 1,000 킬로바이트(1,000 KB) 1기가 바이트(1GB) : 1,000 메가바이트(1,000 MB) 1테라 바이트(1TB) : 1,000 기가바이트(1,000 GB) c.f) 이전 단위를 1024개씩 묶는 건 KiB, MiB, GiB ·..
[CS : 컴퓨터 구조] 컴퓨터 구조에 대하여
·
Computer Science/컴퓨터 구조
01-1 컴퓨터 구조를 알아야하는 이유 ⓐ 문제 해결 능력을 기를 수 있다. ex) 같은 코드를 써도 환경에 따라 다른 경우, 컴퓨터를 분석의 대상으로 바라볼 수 있게된다. ⓑ 성능, 용량, 비용을 고려한 개발을 할 수 있기 때문 ex) 웹 사이트를 운영한다고 가정한다면 운영할 사이트의 서버 컴퓨터를 구매하게 될 때 내가 개발한 코드가 어느정도의 성능, 용량, 비용을 갖고 있는 컴퓨터가 필요한 지 개발자 스스로가 판단 할 수 있어야 한다. (AWS같은 클라우드 서비스를 이용하더라도 판단 능력은 필요하다.) 01-2 컴퓨터 구조의 큰그림 컴퓨터가 이해하는 두 가지 정보 : 데이터 컴퓨터와 주고받는 정보 또는 내부에 저장된 정보를 데이터라고 부르기도 한다. 숫자, 문자, 이미지, 동영상과 같은 정적인 정보 ..
[JAVA] 대소문자 구분 및 변환
·
📆 Today I Learned(개발언어학습)/JAVA
Character 클래스 활용 전달된 값이 대문자인지 구분(대문자 일시 true 아니면 false) isUpperCase() = Character. isUpperCase( char타입 변수 ); 문자열을 대문자로 변환 후 반환 toUpperCase() = 문자열변수. toUpperCase(); 전달된 값이 소문자인지 구분(소문자 일시 true 아니면 false) isLowerCase() = Character. isLowerCase( char타입 변수 ); 문자열을 소문자로 변환 후 반환 toLowerCase() = 문자열변수.toLowerCase();
[JAVA] 문자열을 기본타입으로 변환
·
📆 Today I Learned(개발언어학습)/JAVA
String str = "각 타입에 맞는 리터럴": String ▶ byte [ byte value = Byte.parseByte(str); ] String ▶ short [ short value = Short.parseShort(str); ] String ▶ int [ int value = Integer.parseInt(str); ] String ▶ long [ long value = Long.parseLong(str); ] String ▶ float [ float value = Float.parseFloat(str); ] String ▶ double [ double value = Double.parseDouble(str); ] String ▶ boolean [ boolean value = Boolea..