2021-07-25 한 권으로 읽는 컴퓨터 구조와 프로그래밍 1장

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

1장 컴퓨터 내부의 언어 체계

요즘 굉장히 핫한 책입니다. 이곳 저곳에서 리뷰가 올라오고 모두 칭찬 일색입니다. 저도 이 책을 읽어보고 싶었습니다. 컴퓨터의 토대가 되는 기본 지식을 깔끔하게 설명한다는 추천사들을 훑어보면서 한 번쯤 눈길을 주지 않을 개발자가 있을까요?

그러면서도 걱정을 많이 했습니다. 예전에도 이 책과 비슷한 컨셉의 책들을 몇 권 읽었습니다. 하지만 중도 하차나 일부 내용은 건성으로 훑고 넘어가서 스스로 만족하지 못했습니다. 이번에도 그렇지 않을까 걱정을 했습니다.

이 글을 쓰는 시점에 1장을 모두 읽었습니다. 1장을 읽은 시점에서 상당히 만족스럽습니다. 1장은 비트를 설명하고 비트에서 조금씩 내용을 쌓아올려 논리 연산, 정수, 실수, 문자 등을 설명합니다.

컴퓨터에서 가장 작은 단위인 비트를 이용하여

  • 논리 연산으로 하고,
  • 비트로 숫자(정수, 실수)를 표현하고,
  • 비트로 문자를 표현하고 (아스키 코드, UTF-8),
  • 문자로 다시 숫자를 표현하고 (베이스64 인코딩, URL 인코딩),
  • 색을 표현하는 방법까지

예시를 들어가면서 상세하게 설명합니다.

상당히 지루할만한 내용인데 책이 술술 읽히는 신기한 경험을 했습니다. 약어나 용어에 대한 친절한 설명과 역자분의 주석이 추가되어 ‘어? 이게 이런 뜻이었네?’ 하는 부분도 많았습니다.

재미있었던 내용들을 추려보았습니다.


문자 언어

  • 세 가지 구성요소가 문자 언어의 틀을 이루는데, 컴퓨터 언어에서도 마찬가지다.

    • 기호가 들어갈 상자
    • 상자에 들어갈 기호
    • 상자의 순서

비트

  • 자연어에서는 이 상자를 문자(character)라고 부르고 컴퓨터에서는 비트(bit)라고 부른다.
  • 비트라는 단어는 2진법을 사용한다는 뜻의 바이너리(binary)와 숫자를 뜻하는 디지트(digit)가 기묘하게 합쳐진 말이다.

논리 연산

  • 다른 비트들이 표현하는 내용으로부터 새로운 비트를 만들어내는 이런 동작을 논리 연산(logic operation)이라고 한다.

비트 그룹의 의미

  • 세계적으로 8비트 덩어라가 기본 단위로 널리 쓰리기 시작했고 이를 바이트(byte)라고 부른다.

  • 미국 변호사 한 명이 디스크 크기가 광고에 나온 것보다 작다고 디스크 제조사를 고소했다. 이로 인해 IEC 표준 접두사가 만들어졌다.
  • 키비(KiB)는 2^10, 메비(Mib)는 2^20, 기비GiB)는 2^30, 테비(TiB)는 2^40을 뜻한다.

텍스트 표현

  • 유니코드는 문자 코드에 따라 각기 다른 인코딩을 사용해 이런 문제를 해결한다.
  • 인코딩(encoding)은 다른 비트 패턴을 표현하기 위해 사용하는 비트 패턴을 의미한다.

  • 유니코드 변환 형식 8비트(UTF-8, Unicode Transformation Format-8 bit)

참고: https://ko.wikipedia.org/wiki/UTF-8

색을 표현하는 방법

  • 컴퓨터 그래픽스는 전자 모눈종이에 해당하는 것에 색을 표현하는 점(blob)을 찍어서 그림을 만드는 과정이다.
  • 이때 모눈의 각 격자에 찍는 점을 그림 원소(picture element)라 부르고 , 줄여서 픽셀(pixel)이라고 부른다.

  • 컴퓨터 모니터는 빨간색, 녹색, 파란색 광선을 섞어서 색을 만들어내며, 이런 색 표현법을 RGB 색 모델이라고 부른다.
  • 색은 컬러 큐브(color cube)라는 것으로 표현할 수 있다.
  • 컬러 큐브에서 각 축은 주(primary) 색을 표현하며 값이 0이면 그에 해당하는 주 색의 빛을 끈다는 뜻이며, 값이 1이면 해당하는 주 색의 빛을 가능한 한 최대 밝기로 켠다는 뜻이다.

참고: https://www.geeksforgeeks.org/computer-graphics-the-rgb-color-model/


  • 회색은 빨간색, 논색, 파란색의 밝기를 같은 밝기로 만들면 생긴다.
  • 이런 식으로 빛을 혼합해 색을 표현하는 방식을 가산(additive) 색 시스템이라고 부른다.
  • 각 빛을 섞을수록 더 밝은 색이 나오기 때문이다.

  • 웹 페이지는 주로 사람이 읽을 수 있는 UTF-8 문자의 시퀀스로 이뤄지는 텍스트를 표현하기 때문에, 텍스트를 사용해 색을 표현할 방법이 필요하다.
  • URL 인코딩과 비슷한 방법으로 색을 인코딩한다.
  • 웹에서는 색을 16진 트리플렛(hex triplet)으로 표현한다.
  • 16진 트리플렛은 # 뒤에 여섯 자리 16진 숫자를 추가해 #rrggbb 처럼 표현하는 방식이다.
  • 여기서 rr은 빨간색의 값, gg는 녹색의 값, bb는 파란색의 값이다.
  • 각각의 8비트 색값을 두 자리 문자로 된 16진 표기로 바꾼다.

2장 전자 회로의 조합 논리도 기대됩니다. 매주 한 챕터씩 꼼꼼히 읽고 글을 남겨보려고 합니다.


Written by@[Suho]
뭐든지 만들어보자.