Number Systems and Boolean Algebra
데이터사이언스대학원 Bootcamp 6일차 데이터사이언스를 위한 컴퓨터 시스템 강의 공부한 내용을 정리해본다.
1. Number Systems
컴퓨터는 알다시피 데이터를 0과 1의 조합으로 표현한다. 이진수를 사용하는 이유는 높은 전압과 낮은 전압으로 표현이 가능하기 때문이다. 0, 1 이외의 다른 값이 존재한다면 모호성이 높아질 수밖에 없다. 컴퓨터에서는 2의 보수를 사용해서 연산을 하는데 그 이유는 효율성과 관련이 있다.
보수(raidx complement)
r-진법으로 표현된 n개의 자리를 가진 수 x의 보수는 x가 0일 경우 0, 0이 아닐 경우 로 정의한다. x의 (r-1)의 보수(diminished radix complement)는 로 정의한다. 따라서 1의 보수를 2의 보수로 만들기 위해서는 1을 더해주면 된다.
1의 보수는 이진법으로 표현한 원래 숫자의 단순 bit flip으로 구할 수 있다. 이 때 0이 되는 경우가 2가지 나오기 때문에(모든 숫자가 0 또는 모든 숫자가 1) 2의 보수를 사용해서 하드웨어로 구현한다.
2. Boolean Algebra and Logic Gates
- First-order logic
- 함수적 완전성(Functional Completeness): 어떤 Boole 연산의 집합이 함수적으로 완전하다라는 뜻은 주어진 입력 변수의 집합에 대하여 그 집합에 속한 연산들로 모든 서로 다른 Boole 함수를 정의할 수 있을을 뜻한다. 함수적 완전성을 만족하는 연산의 기본적인 집합은 {AND, OR, NOT}이다. {NOR}와 {NAND}도 각각 AND, OR, NOT을 implement할 수 있기 때문에 함수적으로 완전하다.
논리 설계시 NAND나 NOR 게이트 사용을 선호하는데 AND, OR, NOT을 각각 구현하는 것보다 transistor가 더 적게 들어가기 때문이다. - 논리 게이트(Logic Gate)는 Boole 연산을 그림으로 나타낼 수 있게 한다.