본문 바로가기

source-code/software

한 권으로 읽는 컴퓨터 구조와 프로그래밍

텍스트 표현

수를 사용해 문자나 키보드에 있는 다른 기호 등을 표현하는 방법

  • 아스키 코드
    • 키보드에 있는 모든 기호에 대해 7비트 수 값을 할당
  • 유니코드 변환 형식 8비트(UTF-8)
    • 비트 가격이 떨어짐에 따라, 문자에 16비트 코드를 부여하는 유니코드 만들어짐
    • 비트 같은 추상화를 사용해 숫자를 표현하고, 숫자를 사용해 문자를 표현하며, 다시 다른 숫자를 사용해 이러한(문자를 표현하는) 숫자를 표현!
    • 유니코드 변환 형식 8비트 인코딩 방법이 하위 호환성과 효율성 때문에 가장 널리 쓰이고 있음

문자를 사용한 수 표현

UTF-8은 문자(ex A)를 표현하는 비트들(2진수 000000001000000)로부터 나온 숫자들(0x0041)을 표현하는 숫자들(UTF-8로 인코딩한 값)을 표현하기 위해 숫자(실제 UTF-8로 인코딩한 0x41)들을 사용.

→ 이제는 문자를 사용해 수를 표현할 수도 있음!

  • 출력 가능하게 변경한 인코딩(Quoted-Printable encoding)
    • 8비트 데이터를 7비트 데이터만 지원하는 통신 경로를 통해 송수신하기 위한 인코딩 방법
  • 베이스 64 인코딩(base64)
    • QP 인코딩 → 1바이트를 표현하기 위해 3바이트를 사용 - 비효율적
    • base64 인코딩 = 3바이트 데이터를 4문자로 표현
      • 3바이트 데이터의 24비트를 네 가지 6비트 덩어리로 나누고, 각 덩어리의 6비트 값에 출력 가능한 문자를 할당해 표현
    • URL 인코딩(퍼센트 인코딩)
      • % 뒤에 어떤 문자의 16진 표현을 덧붙이는 방식으로 문자를 인코딩
        • / 는 URL에서 특별한 의미! - / 가 표현하는 특별한 의미를 뜻하고 싶지 않은 경우, /를 %2F(해당 문자의 16진수 표현)라는 문자열로 대신함

 

2장. 전자 회로의 조합 논리 - 컴퓨터는 어떤 논리로 비트를 다루는가

디지털 컴퓨터의 사례

  • 아날로그와 디지털의 차이
    • 아날로그 : 연속적(ex 계산자)
    • 디지털 : 이산적(ex 손가락)
  • 하드웨어에서 크기가 중요한 이유
    • 컴퓨터에서 전자의 여행 시간을 최소화하는 방법은? → 부품을 가능한 (물리적으로) 가깝게 위치시키는 것!
    •  하드웨어를 작게 만들면 속도와 효율은 좋아지지만, 너무 작아지면 서로 간섭하기 아주 쉬워짐
    • 따라서 더 높은 판정 기준을 통해 잡음 내성을 갖는 디지털 회로를 사용하는 것이 필수적!
  • 아날로그 세계에서 디지털 만들기
    • 왜곡(distortion) 이용
    • 출력값이 문턱값(판정 기준)의 한쪽에서 반대쪽으로 옮겨가고, 중간 정도의 출력값을 어렵게 만들기!
    • 이를 통해 연속적인 공간을 이산적인 영역으로 나눠줌
  • 10진 숫자 대신 비트를 사용하는 이유
    • 효율!
    • 숫자를 사용하면 전이 함수를 각기 다른 10가지 문턱값으로 구분할 수 있는 간단한 방법이 없기 때문
    • 현대적 하드웨어는 전이 함수의 하단부와 상단부 영역을 활용!

간단한 전기 이론 가이드

전기는 수도 배관과 유사하다!

  • 옴의 법칙
    • 전류는 전압을 저항으로 나눈 값과 같다(I = V/R)
  • 전기 스위치
  • 회로

비트를 처리하기 위한 하드웨어

  • 릴레이(계전기)
    • 스위치를 움직이기 위해 전자석을 사용하는 장치
    • 릴레이를 통해 NOT 함수를 구현하는 인버터 를 만들 수 있음!
    • but 기계적인 부품이 들어가 있기 때문에, 스위치 접점에 문제 발생 시 제대로 작동 X
  • 진공관
    • 물체를 충분히 가열하면 전자가 튀어나오는 현상 기반 발명
    • 히터가 캐소드를 가열해 전자 튀어 나가게 함, 그리드가 방해하지 않으면 전자가 애노드에 도착(그리드 = 스위치)
    • 움직이는 부분이 없어서 릴레이보다 훨씬 더 빠르다는 장점
    • 아주 뜨겁고 깨지기 쉽다는 단점
  • 트랜지스터
    • 진공관과 비슷하지만 반도체 라는 특별한 물질 사용
      • 반도체 = 도체와 부도체 사이를 오갈 수 있는 물질
      • 아주 작게 만들 수 있지만, 도체가 가늘고 얇아지면 저항이 더 늘어나 열이 발생(반도체가 쉽게 녹을 수 있으므로 트랜지스터에서 열 제거는 아주 중요한 문제)
      • 반도체 물질로 이뤄진 기판 또는 슬랩 위에 만들어짐(보통은 실리콘이 기판 재료로 쓰임)
      • 쌍극 접합 트랜지스터 / 필드 효과 트랜지스터
    • 집적 회로(chip)
      • 트랜지스터 → AND와 같은 간단한 회로 만들 때조차도 부품이 너무 많이 필요!
      • 집적 회로를 사용해 복잡한 시스템을 트랜지스터 하나 정도의 비용으로 만들 수 있음
  • 새로운 기술이 나올 때마다 - 회로는 더 작아지고, 저렴해지고, 에너지를 더 효율적으로 사용!