전체 글502 --- 여기까지! 컴퓨터 구조, 번쩍! 복습하기! --- 2021. 8. 10. 14. CPU 내부구조 - 레지스터 0. 시작하면서 - 이전 포스팅까지 논리회로에 대해서 배웠다. - 그리고 플립플롭이 여러개 모이면 레지스터라는 것을 알게 되었다. - 이번 포스팅에서는 레지스터간의 연결 방식과 동작방식에 대해 알아보자. 1. 레지스터란 무엇인가? - CPU 내부에서 명령어 또는 연산을 처리하면서 발생하는 데이터를 일시적으로 저장하는 기억장치 - 주기억장치(RAM)보다 저장용량이 적지만, 처리속도가 가장 빠르다. - 그러므로 가격은 비싸고, 크기는 작다. - 여러개의 Flip Flop 이나 Latch 등을 연결하여 구성한다. - 휘발성 메모리이며, 읽고 쓰기가 가능하다. 2. CPU의 구성요소 - 컴퓨터에서 데이터 처리를 수행하는 부분을 CPU라고 한다. - CPU는 다음 세가지 구성요소로 이루어져 있다. ▶ 레지스터 세.. 2021. 8. 10. 13. 논리회로 - 플립플롭(Flip-Flop) 1. Flip-Flop이란? - 플립 플롭이란, 1bit를 기억할 수 있는 순서회로를 의미한다. - 플립 플롭이 여러개 모여있는 장치가 레지스터다. a) 조합회로 vs 순서회로 ▶ 조합회로 - 게이트로만 이루어진 논리회로 - 외부의 입력에 의해서만 출력이 발생하는 논리회로 ▶ 순서회로 - Flip-Flop과 게이트를 연결한 논리회로 - 내부의 상태값에 따라 출력이 발생하는 논리회로 2. Flip-Flop의 기본형태 a) 1비트를 기억하는 기본적인 방법 - 위의 회로는 loop(루프)를 도는 구조를 갖는다. - 무한히 순환하는 구조로 인하여 NOT과 NOT 사이에 1비트가 계속 살아있게 되는 구조다. - 즉, 1비트가 기억되는 것이다. b) Flip-Flop 회로도 - 위에서 본 기본 형태를 기반으로 외부.. 2021. 8. 9. 12. 논리회로 - 조합논리회로 0. 시작하기 전에 지금까지 공부한 내용을 쭉 복습해보자. - 컴퓨터에서 수를 표현하고 계산하는 방법에 대해서 알아보았다. - 여러가지 진법과, 보수를 이용한 음수를 계산하는 방법을 다루었다. - 이진법에서 사용하는 1의 보수와 2의 보수를 배웠고, - 왜 2의 보수를 사용하는지에 대해서 알게 되었다. - 컴퓨터가 수를 계산하는 과정을 논리회로의 관점에서 알아보았다. - 부울 대수와 진리표를 이용해서 논리 회로를 그리는 방법과 논리 회로를 논리식으로 표현하는 방법을 배웠다. - 논리식을 더욱 간단하게 구하기 위해, 카르노맵을 사용하여 진리표를 만들고 이를 이용해 논리식을 계산하는 방법까지 공부했다. 위에서 말한 모든 것을 사용하여 조합논리회로를 만든다. 조합논리회로란, 입력값을 기반으로 어떤 결과값을 계.. 2021. 8. 6. 11. 논리회로 - 카르노맵(karnaugh map) 1. 카르노 맵을 사용하는 이유 - 이전 포스팅에서 부울 대수를 이용하여 진리표를 도출해냈고 그것을 활용하여 논리식을 구하는 법을 배웠다. - 부울 대수를 이용해 논리식을 구할 수는 있으나, 여러가지 규칙을 따라야 하는 불편이 있었다. - 카르노 맵은 부울 대수보다 빠르게 진리표를 만들 수 있는 방법으로, - 이를 이용하여 논리식을 간소화 할 수 있고 빠르게 계산할 수 있다. - 이와 같은 이유로 카르노 맵을 사용한다. 2. 카르노 맵 - 기본개념 a) map이란? - map이란, 변수의 개수에 따라 작성되는 표를 의미한다. b) 민텀(minterm)이란? - 곱들의 합을 말하는 것으로, map의 사각형 하나를 minterm 이라고 부른다. - 최소항을 의미하는 것으로, map의 최대항(합들의 곱)을 m.. 2021. 8. 6. 파이썬 - filter와 lambda, map 사용방법 1. filter() 와 lambda, map() a) filter() 와 lambda - filter() 함수는 특정 조건에 걸러진 요소들을 iterator 객체로 만들어 반환한다. - 즉, list, set, tuple에 담아야 사용 및 출력할 수 있다는 것이다. - 여기서 특정 조건은 적용시킬 함수를 의미한다. 그래서 lambda를 많이 사용한다. - lambda는 다음과 같은 형태로 구성된다. lambda 인자 : 표현식 - 만약 a, b 두 수의 합을 반환하는 함수를 작성한다면 다음과 같이 작성할 수 있다. def plus(a, b): return a + b plus(10, 10) # 20을 반환한다. - 이를 람다로는 다음과 같이 작성할 수 있다. result = (lambda a, b : a.. 2021. 8. 6. 10. 논리회로 - 부울대수와 논리식의 간편화 1. 실무 적용 사례 - 우선 실무 적용 사례를 통해서 부울대수와 진리표에 대해서 간략하게 알아보자. - 단일 비트(한자리 비트) 연산을 할 때 S는 a + b 값을 담는다. - C는 Carry라고 부르며 1 + 1를 연산하면 발생하는 초과값을 담는다. - 진리표는 단일 비트 계산의 모든 경우의 수를 적은 표를 말한다. - 부울대수는 S 값에 대한 관계를 표현한 식이다. - 부울대수를 확인하면 배타적 논리합이라는 것을 알 수 있는데, 이는 S값을 보면 된다. - 0 + 0 일 때 0이고 1 + 0 또는 0 + 1일 때 1이 나오는 배타적 논리합 관계인 것을 알 수 있다. - C계산 과정도 논리 곱의 형태라는 것을 알 수 있다. - 이를 기반으로, 단일비트 합에 대한 연산을 논리 회로로 구성을 하면 위와 .. 2021. 8. 5. 9. 논리회로 - 논리 게이트(logical gate) 1. 논리 회로란? - 컴퓨터는 모든 데이터를 2진법으로 처리한다. - 이 2진법은 전기신호에 의해 컴퓨터 내부에서 연산 및 처리가 된다. - 이처럼 컴퓨터의 데이터 처리를 위해, 0과 1로 표현되는 전기적 신호로 동작하는 전자회로를 말한다. 2. 논리 게이트란? - 논리 게이트는 논리회로의 기본 구성요소 중 하나이다. - 논리 회로는 2개의 입력과 1개의 출력을 기본으로 구성한다. - 논리 게이트는 전류나 전압으로 표현되는 데이터의 흐름을 제어하기 위해 사용되는 것이다. - AND, OR, NOT, XoR이 논리게이트다. - NOT 게이트를 제외하고 모두 2개의 입력을 받는다. a) 스위칭 이론 b) AND 게이트(논리 곱) - 입력 A와 B 모두 1인 경우에만 1이 출력된다. - 그 외의 경우에는 모.. 2021. 8. 5. 8. 데이터 표현 - BCD, 패리티 비트, 해밍코드 1. BCD(Binary Coded Decimal) - 10진수를 2진법으로 계산한 코드다. - 2진법으로 변환만 한 것이기에 연산용이 아니라 출력용으로 사용된다. 2. 패리티 비트(parity bit) - 데이터 통신에 있어서 데이터의 오류를 검출하기 위해 사용되는 비트 - 데이터를 전송하다보면 통신과정에서 값이 변형이 될 수 있다. - 이러한 데이터의 변형을 예방하고, 검사하기 위해서 사용되는 비트다. - 짝수 패리티: 1의 개수가 짝수가 되도록 맞춘다. - 홀수 패리티: 1의 개수가 홀수가 되도록 맞춘다. 3. 해밍 코드(Hamming code) - 패리티 비트와 함께 사용되는 방식이다. - 해밍코드는 자기정정 부호의 하나로, 이는 오류를 검출할 뿐만 아니라 정정할 수 있다는 의미다. - 데이터에 .. 2021. 8. 5. 7. 데이터 표현 - 실수 1. 개요 - 이전 포스팅에서 보수에 대해서 알아보았다. - 보수를 이용하여 컴퓨터가 어떻게 정수를 표현하고 계산하는지를 배웠다. - 이번 포스팅에서는 컴퓨터가 실수를 표현하는 방법을 알아보자. 2. 컴퓨터는 실수를 어떻게 표현할까? - 사실 컴퓨터는 실수를 정확하게 표현할 수 없다. 즉, 약간의 오차가 있다. - 왜 그런지 컴퓨터가 실수를 표현하는 방법에 대해서 알아보자. a) 소수를 이진법으로 바꿔보자. - 예를 들어, 5.34를 이진법으로 바꿔보자. - 우선 정수와 소수부를 나누어서 계산한다. - 5를 이진법으로 바꾸면 101이 된다. - 소수부 0.34는 다음과 같은 계산을 한다. - 끝까지 계산해보지는 않았지만, 아마도 무한소수가 될 것 같다. - 계산 결과를 살펴보면 10100101 어쩌구가 .. 2021. 8. 4. 시간복잡도 완전정복(1) 0. 시작에 앞서 요즘 백준을 통해 알고리즘 문제를 열심히 풀고있다. 문제를 작성하면 내 코드가 다른 사람들의 코드보다 10ms 정도 더 걸리는 경우도 있고, 올바른 답은 나오지만 시간초과로 인해서 문제를 틀리는 경우가 있다. 이럴 때 내 코드가 어떤 시간복잡도를 갖고 있는지를 계산한다면, 개선점을 확인할 수 있을 거라고 생각했다. 그래서 이번 포스팅은 시간 복잡도를 계산하는 방법에 대해서 완전 정복을 해보려고 한다. 1. Big - O 표기법 a) 기본 개념 - 입력값에 따른 알고리즘의 사용량을 예측하는 방법이다. - 더 자세한 설명을 원한다면, 아래의 링크를 참고하기를 바란다. https://devraphy.tistory.com/40 Data Structure - 시간 복잡도(Time Complexi.. 2021. 8. 4. 6. 데이터 표현 - 2의 보수를 사용하는 이유 1. 개요 - 앞선 포스팅에서 1의 보수와 2의보수에 대해서 알아보았다. - 컴퓨터가 음수의 계산을 뺄셈이 아닌 덧셈으로 하기 위해서 보수를 사용한다는 것을 알았다. - 그 과정에서 보수를 구하는 방법이 두가지(1의 보수, 2의 보수)가 있다. - 왜 두개가 있는걸까? 보수를 구하는 방법은 하나만 있어도 충분한 거 아닐까? 차이점이 뭘까? - 이러한 궁금증이 들었다. 이 글을 읽는 당신도 그러하다면, 같이 알아보자. 2. 2의 보수를 사용하는 이유 - 결론부터 알아보자. - 2의 보수를 사용하는 이유는 동일한 저장공간을 이용하여 1의 보수보다 더 많은 수의 표현을 할 수 있기 때문이다. - 그렇다면 왜 그런지 차근차근 알아보자. a) 양수는 보수가 없다. - 위의 표를 살펴보자. - 10진수를 이진법으로.. 2021. 8. 3. 이전 1 ··· 20 21 22 23 24 25 26 ··· 42 다음