독서노트-03

독서노트-03


유용한 예정


책의 31페이지는 C 언어의 변수가 메모리에 대응하는 내용을 인쇄하는 예제를 보여 준다.구체적인 코드는 다음과 같습니다.
#include 


typedef unsigned char *byte_pointer;

void show_bytes(byte_pointer start, size_t len)
{
    size_t i;
    for(i = 0; i < len; i++)
        printf(" %.2x", start[i]);
    printf("
"
); }

이 코드는 매우 강한 실용성을 가지고 있는데, 특히 메모리 내용을 깊이 있게 살펴야 할 때이다.비록 VS도 메모리 내용을 보는 기능이 있지만 VS는 너무 비대해서 대형 프로젝트를 하는 것 외에는 열기가 드물다는 단점이 있다.반대로 이런 간소화된 C 프로그램은 여러 가지 상황에서 더욱 역할을 발휘할 수 있다.

수학 기호


책의 36페이지에 처음으로 이상한 수학 기호가 나타났다.
인터넷 조회를 통해 알 수 있듯이 이 기호는 ≈\approx ≈ 과 같은 값이다. 즉'약과 같다'는 뜻이지만 책 속의 내용을 보면 항상 마음에 들지 않는다.'위향량 a≐[01101001] a\doteq[01101001] a≐[01101001]'은'위향량 aaa약은 위모드 [01101001][01101][01101]]'을 의미하는 것일까?
44페이지에 이르러 마침내 이 이상한 수학 기호에 대한 공식 정의를 내렸다. 기호'\doteq\'는 왼쪽이 오른쪽으로 정의되었다는 것을 의미한다.즉,'위향량 a≐[01101001] a\doteq[01101001] a≐[01101001]'의 실제 의미는'위향량 aa가 위모델[01101001][01101001][01101001]]으로 정의되었다'는 것이다.

혹은


혹은 볼 대수 중의 가법
'이유'와'가법'을 연결시키는 사고방식이 나를 탁 트이고 명랑하게 한다.이전에는 이변 또는 연산을 덧셈의 시각으로 바라볼 수 있을 것이라고는 생각하지 못했는데, 밑바닥의 덧셈 연산 회로가 이변 또는 문을 사용해 해당 조작을 완성하는 것을 자주 볼 수 있다고 하지만 단지 인위적으로 설계된 까닭이라고 생각하고 왜 모두'이변'인지 생각해 본 적이 없다.나무에서 이러한 견해를 보고서야 비로소 내가 이전에 논리 연산과 산술 연산의 틀에 얽매여 있었다는 것을 알게 되었다. 설령 내가 줄곧 사고를 발산하는 데 비교적 능한 사람이라고 자인했다 하더라도 논리 연산과 산술 연산의 내부 원리를 연결시키려고 시도한 적이 없다.
여기까지 사실 나에게 더 많은 진동을 준 것은 신기한 것이 아니라 수학의 아름다움을 다시 한 번 발견한 것이다.수학의 아름다움은 여러 가지가 있는데 원리 내부에 깊이 숨겨진 유사성이 그 중 하나다.

성함


이변의 중국어를 나는 줄곧'상이하면 또는'으로 이해했다. 즉, 이변이나 연산에 참여하는 두 요소가 서로 다르면'또는'연산을 한다.그 영어 exclusive or는 항상'상호 배척형 또는 연산'이라고 이해합니다.믿을 만한지 모르겠지만, 내 논리에서는 스스로 조화를 이룰 수 있다.

재미성

  • 흥미로운 성질은 a∧a=0a\wedge a=0a∧a=0
  • 이상 또는 교환율이 있음
  • 이상 또는 결합율이 있음
  • 상기 세 가지 성질을 종합하면 매우 흥미로운 문제를 해결할 수 있다. 한 무더기의 수에서 한 개의 수가 홀수 번만 나타나는 것을 제외하고 다른 수는 모두 짝수 번만 나타난다. 이 홀수 번만 나타난 수를 어떻게 찾아내느냐고 묻는다.
    이차 또는 연산을 활용하면 답은 매우 간단하다. 모든 수를 위치에 따라 이차적으로 하거나 마지막에 얻은 결과에 표시된 수는 바로 기수가 나타나는 수를 찾는 것이다.간략화 표현은 (a∧b)∧a=b(a\wedge b)\wedge a=b(a∧b)∧a=b이다.

    정액을 보충하다


    개념 설명


    책에서 부호화는 다음 공식에 의해 정의된다. B 2 T w(x ⃗)≐ x w - 1 2 w - 1 + ∑i = 0 w - 2 x i 2 i B 2 T{w}(\vec{x})\doteq-x_{w-1} 2^{w-1}+\sum_{i=0}^{w-2} x_{i} 2^ {i} B2Tw(x) ≐--xw ― 12w ― 1+i=0 ∑w ― 2xi2i 그러나 이러한 정의는 직관적이지 않기 때문에 좀 더 직관적인 이해를 소개하고 싶습니다.
    《컴퓨터가 어떻게 뛰었는가》라는 책에서 부호화에 대한 정의는 매우 정교하고 교묘하다. 바로 그 단락을 보고서야 나는 부호화가 도대체 어떻게 생겼는지 진정으로 이해하게 되었다.
    에서 부호를 정의하는 계산은 정수에 대응하는 원코드를 한 자리씩 거꾸로 하고 결과를 토대로 1을 더하면 소득은 마이너스에 대응하는 부호 표시이다.
    이 점은 상투적인 말과 다를 것이 없지만 왜 이렇게 계산해야 하는지를 털어놓는 것이 포인트다.바로 이 단락을 보고서야 나는 왜 부호화의 계산 방식이 이렇게 이상하고 부자연스러우며 심지어는 약간의 조작이 있는지 진정으로 알게 되었다.사실 모든 불합리함은 합리적인 해석이 있다.
    다음은 제가 자신의 이해로 가능한 한 명확하게 설명해 드리겠습니다.
    디지털 회로를 공부할 때 세 가지 인코딩을 말했는데 그것이 바로 원코드, 반코드와 인코딩이다. 그러나 나는 인코딩의 공식이 어떻게 생겼는지, 왜 인코딩이라고 이렇게 이상한 이름을 부르는지 이해한 적이 없다.원본은 쉽게 이해할 수 있는데 바로'원시적인 이진 인코딩'이다.반코드도 쉽게 이해할 수 있는데 바로 원코드의 기초 위에서 위치에 따라 반코드를 취하는 것이다.그런데 이'보정'은 도대체 무슨 뜻인가요?무엇을 보충이라고 합니까?어떻게 보충합니까?누구와 보충합니까?
    실제로'보너스'가'보너스'라고 부르는 이유는 마음대로 지은 이름이 아니다.그 중에서'보'는'화(和)가 0'이라는 뜻이다. 즉, 1+(-0.1)=0 1+(-1)=0 1+(-0.1)=0을 말하면 1과 -1이 서로 보완된다고 한다.2진수에 대해서도 마찬가지다.기호 정수가 있는 부호화 표시는 바로 '상호보완' 이라는 정의를 바탕으로 한 것이다.
    4자리 2진수를 예로 들면 표시할 수 있는 가장 큰 무기호 수는 바로 비트 모델[1111]에 대응하는 무기호 정수 15이다. 여기에 1을 더하여 16을 나타내면 넘침이 발생한다. 이론적으로 얻어야 할 것은 [10000]이지만 비트 모델이 4자리이기 때문에 절단이 생겨서 [0000]이 되고 [0000]에 대응하는 무기호 수는 정수 0이다.분명히 우리는 [1111] + [0001] = [0000] [1111] +[0001] =[0000] [1111] +[0001] =[0000]를 얻을 수 있다.자, 위에서 보너스에 대한 정의에 따라 여기서 우리는 [1111]와 [0001]는 서로 보완하는 것이다. 즉,'서로 보너스'라는 결론을 얻을 수 있다.
    수학 상식에 따르면'0을 더한 두 수는 서로 상반수', 즉 [1111]와 [0001]은 이런 위치가 제한된 상황에서 사실상의 상반수여야 한다.우리는 [0001]을 정상적으로 표시하는 무기호수 +1으로 간주한다면 자연스럽게[1111]가 표시하는 것은 -1이어야 한다.
    이 절차에 따라 우리는 표시할 수 있는 모든 정수에 대응하는 마이너스의 부호화 표시를 구할 수 있다.
    그런데 한 가지 문제가 있는데, 정수를 알았는데, 어떻게 마이너스에 대응하는 부호화 표시를 신속하게 확정합니까?
    앞에서 언급한 것을 회상해 보세요. "원본에 대해 위치별로 거꾸로 취한다."분명히 이 부호와 원 부호의 합은 [1111]이다. 왜냐하면 위치에 따라 거꾸로 하면 원 부호는 1의 자리이고 반 부호는 반드시 0이기 때문이다.원래 번호는 0의 자리이고, 부호는 반드시 1이다.그래서 덧붙여서 얻은 것은 틀림없이 모두 1인 비트 모델이다.얻은 결과에 1을 더하다.모두가 알다시피 덧셈은 교환율을 가지고 있다.계산 과정은 반코드를 토대로 1을 더해야 한다고 말했는데 우리는 반코드와 원코드를 구한 후에 다시 화의 기초 위에서 1을 더하는 것을 고려할 수 있다.이렇게 하면 [1111]에 1을 더하면 얻은 결과는 반드시 0, 즉 [0000]이다.
    자, 이 단계까지 토론하고 다시 돌이켜 보면'상호보완'의 정의는 0이 바로 상호보완이다.따라서 우리는 비트 벡터 a\vec{a}a는 부호화 표시의 정수 aa에 대응하는 비트 모델이고 b\vec{b}b는 부호화 표시의 음수 bbb에 대응하는 비트 모델이라고 가정할 수 있다.b=-ab=-ab=-a, 분명히 a⃗+b⃗=0\vec{a}+\vec{b}=0a+b=0 만약 a⃗′\vec{a}'a′가 a⃗\vec{a}a에 대응하는 반코드라면 a⃗+a⃗′+1 = 0\vec{a}+\vec}a} {a} a} a 에 대응하는 반코드가 있으면 a͈+a͈ + a\840}
    상기 두 가지 방식을 비교하면 다음과 같은 것을 얻을 수 있다. b⃗=a⃗′+1\vec{b}=\vec{a}'+1b=a′+1 즉, 부호화의 정의에서 우리는 부호화를 계산하는 방식을 유도할 수 있다. 정수에 대응하는 원코드를 한 자리에서 반으로 하고 결과를 토대로 1을 더하면 얻은 것은 바로 마이너스에 대한 부호화 표시이다.
    이상.

    좋은 웹페이지 즐겨찾기