목록전체 글 (400)
happy coding
동혁이는 오래된 창고를 뒤지다가 낡은 체스판과 피스를 발견했다. 체스판의 먼지를 털어내고 걸레로 닦으니 그럭저럭 쓸만한 체스판이 되었다. 하지만, 검정색 피스는 모두 있었으나, 흰색 피스는 개수가 올바르지 않았다. 체스는 총 16개의 피스를 사용하며, 킹 1개, 퀸 1개, 룩 2개, 비숍 2개, 나이트 2개, 폰 8개로 구성되어 있다. 동혁이가 발견한 흰색 피스의 개수가 주어졌을 때, 몇 개를 더하거나 빼야 올바른 세트가 되는지 구하는 프로그램을 작성하시오. 입력 : 첫째 줄에 동혁이가 찾은 흰색 킹, 퀸, 룩, 비숍, 나이트, 폰의 개수가 주어진다. 이 값은 0보다 크거나 같고 10보다 작거나 같은 정수이다. 출력 : 첫째 줄에 입력에서 주어진 순서대로 몇 개의 피스를 더하거나 빼야 되는지를 출력한다...
TCP school 을 보고 정리한 내용입니다. 실수의 표현 방식 실수를 표현하는 방법은 정수에 비해 훨씬 복잡한데, 컴퓨터에서는 실수를 정수와 마찬가지로 2진수로만 표현해야 하기 때문이다. 따라서 실수를 표현하기 위한 다양한 방법들이 연구되었으며, 1. 고정 소수점 방식 2. 부동 소수점 방식 이 사용되고 있다. 고정 소수점 (fixed point) 방식 실수는 보통 정수부와 소수부로 나눌 수 있는데, 이것을 이용해 소수부의 자릿수를 미리 정해 놓고, 고정된 자릿수로 소수를 표현하는 방식을 사용할 수 있다. 하지만 이 방식은 정수부와 소수부의 자릿수가 크지 않으므로, 표현할 수 있는 범위가 매우 적다는 단점이 있다. 부동 소수점 (floating point) 방식 실수는 보통 정수부와 소수부로 나눌 수..
TCP school을 보고 정리한 내용입니다. 정수의 표현 정수를 표현하는 방법에는 크게 부호없는 정수와 부호있는 정수로 나누어 생각할 수 있다. 부호없는 정수를 표현할 때에는 단지 해당 정수 크기의 절댓값을 2진수로 변환해 표현하면 되지만, 부호있는 정수에서 음수를 표현하는 방법이 있다. 음수의 표현 컴퓨터에서 음수를 표현하는 방법에는 1. 부호 비트와 절댓값 방법 2. 1의 보수법 3. 2의 보수법 이 있다. 부호 비트와 절댓값 방법은 최상위 1비트로 부호를 표현하고, 나머지 비트로 해당 정수의 절댓값을 표현하는 방법이다. 이 방법을 사용하면 최상위의 1비트가 부호를 표현하기 위해 사용되어 표현할 수 있는 절댓값의 범위는 절반으로 줄어든다. 하지만 음수를 표현할 수 있으므로, 총 표현할 수 있는 크기..
TCP school 을 보고 정리한 내용입니다. 비트 단위 연산(bitwise operation) 컴퓨터는 모든 데이터를 비트 단위로 표현하고 처리하기 때문에, 이 연산을 통해 사용되는 메모리 공간을 줄이거나, 성능의 향상을 기대할 수 있다. 비트 연산자 ~ 비트를 1이면 0으로, 0이면 1로 반전시킴. (비트 NOT 연산) & 대응되는 비트가 모두 1이면 1을 반환함. (비트 AND 연산) | 대응되는 비트 중에서 하나라도 1이면 1을 반환함. (비트 OR 연산) ^ 대응되는 비트가 서로 다르면 1을 반환함. (비트 XOR 연산) 지정한 수만큼 비트들을 전부 오른쪽으로 이동시킴. (right shift 연산) 비트 연산자 진리표 비트 연산자 진리표란 각 비트의 값에 따라 얻을 수 있는 가능한 비트값을 ..
TCP school 을 보고 정리한 내용입니다. 비트(bit) 와 바이트(byte) 비트란 컴퓨터가 데이터를 처리하기 위해 사용하는 데이터의 최소 단위이며, 비트에는 2진수의 값(0과1)을 단 하나만 저장할 수 있다. 그리고 바이트란 위와 같은 비트가 8개 모여 구성되며, 한 문자를 표현할 수 있는 최소 단위이다. 바이트 저장 순서(byte order) 컴퓨터가 저장하는 데이터는 대게 32비트(4바이트)나 64비트(8바이트)로 구성되는데, 이렇게 연속되는 바이트를 순서대로 저장해야 하는데 이것을 바이트 저장 순서라고 한다. 이 순서에 따라 1. 빅 엔디안(big endian) 2. 리틀 엔디안(little endian) 으로 나눌 수 있다. 빅 엔디안(big endian) 빅 엔디안 방식은 낮은 주소에 ..
보호되어 있는 글입니다.
조건부 컴파일을 사용하면 지정한 조건에 따라 코드의 일정 부분을 컴파일할지 안할지를 지정할 수 있느데, 이러한 조건부 컴파일에 사용할 수 있는 조건부 컴파일 지시자(conditional compile directive)는 1. #if 2. #ifdef 3. #ifndef 가 있다. #if #if 조건식1//#if 지시자를 이용한 조건부 컴파일 형식 컴파일할 명령문1 #elif 조건식2 컴파일할 명령문2 #else 컴파일할 명령문3 #endif #if 지시자 다음에 나오는 조건식1의 결과가 0이 아니면 참, 0이면 거짓으로 간주한다. 또한, #elif 지시자를 사용해 조건식을 여러 개 사용할 수도 있다. #else 지시자를 사용해 모든 조건에 해당하지 않는 경우를 지정할 수도 있다. 여기서 주의할 점은 #..
TCP school 을 보고 정리한 내용입니다. 모듈(module) 모듈이란 프로그램을 구성하는 구성 요소로, 관련된 데이터와 함수를 하나로 묶은 단위를 의미한다. 보통 하나의 소스 파일에 모든 함수를 작성하지 않고, 함수의 기능별로 따로 모듈을 구성하는데, 이러한 모듈을 합쳐 하나의 파일로 작성하는 방식으로 프로그램을 만들게 된다. 이처럼 프로그램 코드를 기능별로 나눠 독립된 파일에 저장해 관리하는 방식을 모듈화 프로그래밍이라고 한다. 분할 컴파일 작성된 모듈은 개별적으로 컴파일된 후, 링커에 의해 하나의 실행 파일로 만들어진다. 이렇게 하나의 실행 파일을 만들기 위해 소스 파일을 여러 개로 나누어 개발하는 방식을 분할 컴파일 방식이라고 한다. 최종적인 실행 파일의 생성을 위해 접근하는 변수나 호출하는..