목록분류 전체보기 (221)
cyphen156

뭔가 챕터 제목부터가 어려워보입니다. 근데 막상 해보면 그냥 이론적인 내용과 어떻게하면 내가 작성한 코드의 문제점을 찾고 수정하는지에 관한 안내 내용이므로 부담없이 그냥 천천히 읽어보면 됩니다. 디버그는 뭘까? 버그(Bug)즉 벌레를 없앤다는 것인데 프로그램의 오류를 버그라고 부르고, 이를 찾아내서 고치는 것을 디버그라고 합니다. 프로그램 오류를 버그라고 부르게 된 이유는 아주 옛날에 컴퓨터에 벌레가 한마리 들어가서 오작동한 적이 있었고, 이 사건 이후로 프로그램 오류를 버그라고 부르게 되었다고 합니다. 디버깅을 하는 가장 간단한 방법은 연필로 끄적여보는것 입니다. 차근차근 프로그램의 동작 순서를 노트에 적어 가면서 변수가 어떻게 변하는지를 추적해서 프로그램 동작 논리에 모순이 없는지를 확인하고, 예상치..

개인 문제풀이임으로 오답이 있을 수 있습니다. 다음 중첩 루프의 실행 결과를 예측해 보고 실제 실행 결과를 출력하여 비교하라. for (i = 0; i = 1; j--) { printf("%d %d\n, i, j); } } #define _CRT_SECURE_NO_WARNINGS #include int main(void) { int i, j; for (i = 0; i = 1; j--) { printf("%d % d\n", i, j); } } return 0; } 1부터 n까지의 합을 구하되 그 합이 입력 정수를 넘지 않아야 한다는 조건 하에서 최댓값을 구하라. > Enter a maximum number. >..

오늘날의 현대 컴퓨팅 환경에서는 대부분 2의 보수를 통해 수치 자료를 표현한다. 2의 보수 2의 보수란 2진수 체계에서 음수와 양수, 그리고 0이라는 수를 표현하기 위해 사용되는 수 체계로, 8비트를 기준으로 최상위 비트(MSB)를 부호비트로 사용하고, 남는 7개의 비트를 통해 수를 표현하는 방법이다. 숫자 0인 경우 00000000(0),양수의 경우 00000001(1)~01111111(127), 11111111(-1)~10000000(-128)로 표현된다. 특이한 점은 양수의 표현 범위가 2의 7제곱이 아니라 2의 7제곱 -1이라는 사실인데 이것은 0의 존재를 표현하기 위해서이다. 2의 보수체계에서 양수를 음수로 만드는 과정은 간단하다. 2진수 양수의 모든 비트를 반전(0->1, 1->0)시킨뒤, 1..

컴퓨터가 10진수를 표현하는 방법은 여러가지 방법이 있지만 오늘 소개할 방법은 존(Zone)과 팩(Pack)이라는 형식이다. 이 두 방법은 IBM에서 BCD/EBCDIC(Binary Coded Decimal / Extended Binary Coded Decimal Interchange Code)라는 문자 코딩방식에서 나온 특수한 형식으로, 주로 정밀한 수의 계산이 필요한 금융권에서 사용하는 일반적인 프로그래밍 언어에서 사용하는 방법은 아니다. 두 형식 모드 수를 표현할 때 1바이트 단위로 사용한다는 것은 동일하지만 약간의 차이점이 존재한다. 존(Zone) 형식 표현법 존 형식은 상위 4비트는 1111(F) 또는 1110(D, 양)/1100(C, 음수)로 채워 부호비트인지 여부를 알려주고, 하위 4비트에 ..

저번주에 주말야간 알바 하던 것을 그만두고 1주일을 놀았다 돈이 좀 궁할것 같지만 일하는 동안 스트레스를 너무 많이받아서 그만두는게 기분이 좋았다. 이번에 일했던 곳은 배달음식점이었다. 물류센터도 가보고 마트 판촉도해보고 그만둘때 아쉽지 않은 적은 이번이 처음인것같다. 한번 일 시작하면 기본이 6개월이엇는데... 방학동안 C++, 게임엔진, 선형대수학에 대해서 공부하면서 하루 프로그래머스 4문제, 백준 알고리즘 4문제를 풀기로 계획했었는데, 요새 백준 알고리즘은 1문제 푸는데 거의 2~4시간 가까이 걸리니까 다른 공부를 못하고있다. 이것도 나름 이유가 있는데 프로그래머스에서는 아무런 제한 없이 문제를 푸니까 금방 푸는데 백준에는 자체 제약조건으로 C언어 구조체 쓰지 않기, stdio.h를 제외한 모든 라..

임시발행글 //모든 자료들은 Nand2Tetris홈페이지에서 찾을 수 있습니다 또는 cyphen156/Work-space: Studying (github.com)에서 찾으실 수 있습니다.

기계어와 프로그래밍 언어 프로그래밍 언어가 플랫폼간 호환성과 프로그래머의 편의에 맞춰 강력한 표현력을 갖도록 설계하여 코딩을 편하게 만들어주는 것이 목표라면 기계어는 프로그래밍언어로 작성된 프로그램을 대상 하드웨어에서 직접 명령을 실행하고, 하드웨어를 완전히 제어하는 것이 설계 목표다. 다시 말해서 2장과 3장에서 만든 연산기와 메모리를 직접 제어하는 언어이다. 그렇기 때문에 기계어는 하드웨어가 명령을 수행할 수 있도록 2진 버전으로 구성되어 있고 약간의 프로그래머의 편의를 위한 기호 버전으로 나타낼 수 있다. 예를 들어 R1 + R2라는 명령이 있을 때 2진 기계어로 표현한다면 R1 = 00001, R2 = 00010, + = 101011일 때, 이 코드들을 조합(assemble)하면 101011(+)..

컴퓨터가 디지털 세계를 구축하려면 어떻게 표현할까?모든것은 좌표 평면 위에 점(Point)이 존재하는가 아닌가(참/거짓)으로 표현할 수 있고, 이 점들을 연결하면 선(Line)이, 선을 연결하면 2차원 평면도형이, 또 2차원 평면도형끼리 연결하면 3차원 입체도형의 형태가 된다. 이러한 특징은 현실에서 뿐 아니라 가상세계에서도 적용될 수 있는 법칙이고, 가상세계에서는 좀 더 쉽게 이해하기 위해 집합론을 사용한다.집합론 (Set)서로 구분되는 원소들을 용도에 따라 묶고, 정의하여 구분해서 사용하는 방법 정수, 자연수, 유리수, 무리수 등이 있다.분류정의기호자연수1, 2, 3...등 0보다 큰 정수물건을 세거나 순서를 지정하기 위해 사용한다.N정수자연수와 자연수의 음수 0을 포함하는 수의 집합Z유리수분모가 0..