CODE WEEK 2
chapter 8 십진수 이외의 것
우리가 사용하는 수체계를 부를 때 ‘10에 기반을 둔 수체계’라 부르거나 십진수라 이야기합니다. 인간에게는 이 수체계가 너무도 자연스럽게 사용되고 있기 때문에 다른 수체계를 생각하는 것 자체가 처음에는 쉽지 않습니다.
이런 숫자 체계를 8에 기반을 둔 수체계 혹은 팔진수라 이야기합니다. 우리가 십진수 대신 팔진수를 사용했다면 다음과 같은 기호는 볼 수 없었을 것입니다. 9
십진수 체계에서도 ‘십’을 표현하는 데 특별한 기호를 사용하지 않았던 것처럼 팔진수 체계에서도 ‘팔’을 표기하는 특별한 기호가 필요치 않은 것이지요.
십진수 이외의 수체계에서는 10을 ‘일 공’이라고 불러서 혼동을 막을 수 있습니다.
우리가 사용하는 숫자 체계를 0과 1만 사용하는 이진수 체계로까지 단순화 시켰으니, 이제 우리가 할 수 있는 만큼 살펴본 것 같습니다. 더 이상 간단해질 수는 없으니까요.
컴퓨터로 할 수 있는 모든 것은 이진수에 기반하고 있습니다.
1948년경 미국의 수학자인 존 와일더 터키는 // 짧고, 간단하고, 우아하고, 완벽하게 사랑스러운 단어인 bit(비트)를 사용하기로 결정하였습니다.
(인덱스가 그래서 0부터인가보다... )
chapter 9 비트, 비트, 비트
토니 올란도는 1973년도에 부른 ‘Tie a Yellow Ribbon Round the Ole Oak Tree’에서 구구절절하게 사연을 덧붙이거나 이런저런 상황을 설명하고 싶지는 않았던 것 같습니다. // 결국 남자가 원했던 것은 ‘예’ 혹은 ‘아니요’라는 대답 중 하나였을 것입니다.
이진수 체계에는 약간 특별한 점이 있지요. 그것은 바로 가장 간단한 숫자 체계라는 점입니다.
이진수를 표현하기 위하여 만들어진 비트(bit)라는 단어는 컴퓨터와 연관된 신조어들 중 가장 사랑스러운 단어입니다. // 비트라는 단어에 ‘컴퓨터 시대의 정보 처리를 위한 가장 기본적인 단위’라는 의미가 부여된 것입니다.
비트라는 것이 매우 적은 정보를 전달한다는 점입니다. 실제로 한 비트의 정보는 어떠한 정보도 포함될 수 없지요. 한 비트를 이용하여 가장 적은 양의 정보를 표현할 수 있으므로, 복잡한 정보를 전달하려면 여러 비트를 이용하면 되겠지요.
어떠한 정보라도 2개 혹은 그 이상의 가능성 중에서 하나를 선택하는 것으로 단순화시킬 수 있다면 이는 비트를 이용하여 표현할 수 있다는 의미입니다.
실제로는 각각의 의미에 대해서 그냥 아무렇게나 할당해도 문제가 될 것은 없습니다. 값이 어떻게 할당되든 해당 부호를 사용하는 사람들끼리는 비트가 0과 1의 값을 가질 때 어떤 의미인지는 반드시 알고 있어야 합니다.
특정한 위치의 비트나 비트열이 어떤 의미를 가지는지는 언제나 상황에 따라 이해되어야 합니다.
비트에 대하여 이야기할 때 비트수에 대하여 자주 이야기하게 되지요. 이는 사용하는 비트수가 많아짐에 따라 전달할 수 있는 서로 다른 가능성의 수가 많아지기 때문입니다. (= 전달할 수 있는 가능성의 수가 많아진다는 것은 전달할 수 있는 정보의 양이 많아진다는 말과 동일하지요.)
이진수 부호로 표현 가능한 값의 수는 언제나 2에 비트수 만큼을 거듭제곱한 것과 동일합니다.
만일 200개의 서로 다른 경우를 표현하기 위해서 비트를 할당해야 한다면 그냥 8비트를 쓰면 되니까요.
아마도 가장 많이 볼 수 있는 이진부호는 UPC(Universal Product Code, 세계 상품 부호)// 상품 포장에 항상 바코드로 표기되어 있는 부호입니다. UPC는 컴퓨터가 우리 삶 속으로 융화되어 가는 여러 방법 중의 하나를 보여주는 상징적인 존재입니다.
추가 정보를 두어 오류에 강하게 하는 것으로써, 보통 여분의 정보를 이용한 중복성(redundancy)을 두었다고 말합니다. 오른쪽 숫자의 1100110과 1001110
0 51000 01251 7
비트를 이용해서 상품 부호, 필름 스피드, 영화 평점, 영국군의 침입, 사랑하는 사람의 의도를 알아보았던 것과 마찬가지로, // 비트를 이용하여 다른 여러가지 정보를 표현하는 데 필요한 것은 그 정보가 얼마나 많은 가능성을 가지고 있는지 세어보아야 한다는 것밖에 없습니다.
비트는 논리학이라는 분야에서도 중요한 역할을 하고 있습니다. //여기서 참은 1로, 거짓은 0으로 표현할 수 있습니다.
chapter 10 논리와 스위치
몇몇 수학자들은 논리를 수학적으로 정의하려고 노력했습니다. // 실제로 개념적인 진전을 이루어낸 사람은 바로 부울이었습니다.
부울의 천재성이 발휘된 부분은 바로 대수학의 연산자들이 숫자를 처리해야 한다는 개념에서 연산자를 분리시켜서, 이를 좀 더 추상화시켜 사용했다는 것입니다. 즉, 부울 대수에서 연산자는 수가 아니라 종류에 대하여 적용되지요. // 후에 집합(set)이라는 이름으로 잘 알려지게 됩니다.
부울 대수에서 +기호는 두 종류의 합집합 (union)을 의미합니다.
부울 대수에서 x 기호는 두 종류의 교집합(intersection)을 의미합니다.
부울 대수에서 1이라는 기호는 전부를 나타냅니다. // ‘전체 집합(universe)’이라고 하지요.
F x (1 - F) = 0 (공집합)
위의 수식은 논리학에서 역사적으로 매우 중요한 개념인 ‘모순의 법칙’을 수식으로 나타낸 것입니다. 모순의 법칙은 그 자신과 그것에 반대되는 것에 모두 속할 수는 없다는 것이지요.
+기호는 이제 OR을 의미합니다
x 기호는 이제 AND를 의미합니다
앞의 전체에서 뭔가를 제외하는 연산인 1- 는 이제 NOT을 의미합니다.
중요한 키워드는 바로 ‘와(and)’라는 단어입니다. ‘두 스위치가 모두 닫혀 있나요?’ (직렬구조)
중요한 키워드는 ‘또는(or)’입니다. ‘스위치 중에 하나라도 닫혀 있나요?’ (병렬구조)
(차분기계와 근대 컴퓨터의 시조 해석기관 - 찰스 배비지)
chapter 11 빌 게이츠? 논리 게이트!
스위치와 마찬가지로 릴레이도 직렬 혹은 병렬로 연결되어 간단한 논리 동작을 수행할 수 있습니다. 이러한 릴레이의 조합을 논리 게이트라고 부릅니다. // 좀 더 복잡한 논리 처리를 수행하기 위하여 릴레이를 조합할 수 있으며, 이를 통하여 수치 연산 등의 기본적인 연산 요소를 만들어 낼 수 있다는 말입니다.
릴레이들을 연결하는 것은 논리 게이트를 만드는 데 가장 중요한 개념입니다.
AND 게이트
두 릴레이가 직렬로 연결된 것을 AND게이트라 합니다.
OR 게이트
두 릴레이의 출력이 서로 연결되어 있다는 점
릴레이의 출력이 두 개의 서로 다른 접점으로 연결 가능한 형태를 쌍투 릴레이라 부른다고 이야기 했습니다.
NAND 게이트, NOR 게이트
릴레이가 동작하고 있지 않을 때 전압이 출력되는 특성을 가지고 있습니다. (인버터의 출력 특성과 비슷하지요.)
릴레이가 사용되었던 이유가 바로 약해진 신호를 증폭하기 위해서였다는 것이 기억나시나요? 또 다른 용도로 버퍼는 신호를 지연시키기 위해서 사용될 수도 있습니다.
(버퍼링!!)
chapter 12 이진 덧셈기
덧셈은 연산에 있어서 사장 기본이 되는 동작이므로, 컴퓨터를 만들려면 (사실 이 책은 컴퓨터를 만들려고 하는 책이죠) 그보다 먼저 숫자를 더하기 위하여 어떤 것을 만들어야 하는지 알고 있어야만 합니다. 일단 덧셈을 할 수 있는 기계를 만들고 나면 컴퓨터가 수행하는 유일한 연산이 바로 덧셈이라는 사실을 아시게 될 것입니다.
한 비트의 두 이진수를 더하면 두 비트가 되며, 각각 합(sum) 비트와 자리올림(carry) 비트라 이야기 합니다.
01100101
+10110110
100011011
AND 게이트를 이용하여 두 이진수 간의 덧셈에 대한 자리올림 비트를 계산해 낼 수 있습니다.
‘반가산기(Half Adder)’ // 반가산기의 단점은 바로 아랫자리에서 덧셈을 통해 올라온 자리올림을 처리할 수 없다는 것이지요.
전가산기(Full Adder) (자리올림 처리까지도 가능하다.)
‘정말 이런 방식으로 컴퓨터가 숫자들을 더하는 거야?’
덧셈기의 속도는 전가산기의 처리 속도와 비트 수를 곱한 결과가 됩니다. 이런 덧셈기를 자리올림 전파 덧셈기라 합니다.
컴퓨터에서 더 이상 릴레이를 사용하지 않는다는 점입니다. // 컴퓨터는 릴레이를 사용하였으나 그 이후에는 진공관을 사용했으며, 오늘날의 컴퓨터는 트랜지스터를 사용합니다.
chapter 13 그렇다면 뺄셈은 어떨까요?
(143 + (-78) 덧셈이 가능하면 뺄셈도 가능하다.)
뺄셈에서는 자리 올림수(carry)가 발생하는 것이 아니라 빌림수(borrow)가 발생하며, 본질적으로 덧셈과는 이런저런 면에서 서로 다른 연산 방식을 가지고 있습니다.
뺄셈에 사용되는 두 수 // 빼는 수(subtrahend)와 빼어지는 수(minuend)입니다. 빼어지는 수에서 빼는 수를 빼면 그 결과는 두 수의 차가 되는 것입니다.
이진수에서는 1로만 이루어진 숫자열에서 빼는 수를 빼기 때문에 그 결과를 1의 보수라 부릅니다. //
1의 보수를 이진수의 반대 값 혹은 역수라 이야기 합니다. (이쯤에서 11장부터 인버터라 불리는 것을 만들어 왔으며, 이 장치가 0은 1로, 1은 0으로 바꾸는 장치였다는 것이 기억날지 모르겠습니다.)
음수 기호를 위하여 한 비트를 추가하는 방법 // 또 다른 방식이 있는데 // 이 방식은 숫자를 표현하기 위해서 얼마나 많은 비트를 사용할 것인지 미리 결정해 두어야 한다는 단점이 있습니다.
500 501 502 ... 999 000 001 ... 497 498 499
이 숫자들이 원형으로 늘어진 형태를 가지고 있다는 것에 관심을 가지실 필요가 있습니다.
125 01111101 모든 비트를 반전
-126 10000010 +1
10000011 =-125/ (131)
이진수는 부호가 있는 숫자를 표현할 수 도 있고 부호가 없는 숫자를 표현할 수도 있습니다.
이진수 자체로는 해당 숫자가 부호 있는 숫자인지, 부호가 없는 숫자인지 판단할 수 있는 방법이 없습니다.
10110110 (01001001 = 73)
부호 있는 숫자인가요? 아니면 부호가 없는 숫자인가요? -74 혹은 182 모두 될 수 있습니다.
Author And Source
이 문제에 관하여(CODE WEEK 2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jinju_woo/CODE-WEEK-2저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)