ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 컴퓨터 과학과 2진법
    CS & Algorithm & Data Structure & C 2021. 7. 12. 11:49
    반응형

    처음에는 단순히 코딩 언어만 잘 하면 일처리에 문제가 없을 것이라고 생각했다.

    하지만 비전공자로써 일을 하다보니 결국은 나오게 되는 말이 컴퓨터과학, 알고리즘과 같은 것이었다.

    일 처리 하는 것과는 상관이 없어보지만 사실상 관계성을 가진다.

    Javascript에서 사용 되는 Array.prototype.map()과 같은 경우에도 단순히 사용 방법만 알고 사용 할 수도 있지만, 어떻게 사용 되는지  충분히 이해한 상태에서 사용하려면 알고리즘과 자료구조를 알고 있어야한다.

    그래서 깊이 들어가기 전에 간단하게 조금 이미지를 그려보려고 한다.


    Computer Science

    컴퓨터 과학이라고 하는 것은 쉽게 말해 문제 해결을 위한 학문이라고 한다.

    특히 대학에 가려는 분들이 헷갈려 하는 경우가 컴퓨터 과학, 컴퓨터 공학이라는 단어이다.

    쉽게 보자면, 컴퓨터 과학은 JAVA, C 등 소프트웨어, 프로그래밍, 알고리즘 등을 만지는 것이고, 컴퓨터 공학은 하드웨어, 프로세서 아키텍쳐, 반도체나 칩 설계, SoC 등을 말한다.

     

    컴퓨터 과학에서 기본적으로 문제 해결이라고 하면 input과 output이 있다.

    즉, 입력(input)을 전달 받아서 출력(output)을 만들어내는 과정이 있다는 것이다.

    그런데 컴퓨터는 오직 두 가지 값 밖에 가질 수 없다.

    바로 0과 1 이다.

    여기서 2진법이 나온다.

     

    2진법

    컴퓨터는 오직 0(끄기), 1(켜기)만으로 숫자, 글자, 사진, 영상, 소리 등을 저장 할 수 있다.

    여기서 bit(비트)라는 것을 볼 수 있는데, bit는 binary digit의 줄임말로써, 0과 1 두 가지 값만 가질 수 있는 측정 단위를 말한다.

     

    그러나 비트 한 개는 많은 양의 데이터를 나타내기에 부족하다.

    그렇기 때문에 비트열을 사용하게 된다.

    Byte는 8개의 비트가 모여서 만들어 진 것이다.

    이러한 것들은 컴퓨터 속의 작은 스위치 즉, 트랜지스터에 의해서 작동한다.

    트랜지스터(Transistor)에 대해서 찾아보면 증폭작용과 스위칭 역할을 하는 반도체 소자 라고 나와있다.

    우선은 깊이 들어가지 않고 훑는 정도로 보려고 하니 쉽게 말하자면 작은 스위치 라고 생각하면 되는데, 이것이 컴퓨터 안에 수 백만, 수 십억개가 위치하고 있다.

    이를 물리적으로 이용해서 정보를 표현하고 값을 저장하는 것이다.

     

     

    정보의 표현

    우리는 비교적 간단한 숫자부터, 문자나 영상, 음악 등 다양한 정보를 컴퓨터를 통해서 처리하게 된다.

    컴퓨터는 어떻게 이런 다양한 정보들을 처리할 수 있을까?

     

    우선 문자의 표현에 대해서 알아보자!

    문자의 표현에서 빠질 수 없는 것이 바로 '아스키(ASCII) 코드' 이다.

    앞서 2진법에서 0, 1에 대해서 살펴봤다.

    그리고 이를 통해서 다양한 것들을 만들어낼 수 있는데, 문자 또한 그 중 하나이다.

    문자를 숫자로 표현 할 수 있도록 정해진 약속이 있는데 그 중 하나가 ASCII(American Standard Code for Information Interchange) 이다.

    꼭 라이브러리, 프레임워크까지 가지 않아도 단순히 HTML, CSS, Javascript를 하는 분들도 아스키문자를 사용하게 되는 경험을 해보았을 것이다.

    위의 이미지에서보는 것처럼 A라고 한다면 65, Z는 90으로 표현 되어있다.

    만약 A를 2진법으로 나타내본다면 어떻게 될까?

    2⁶ x 1 + 2⁵ x 0 + 2⁴ x 0 + 2³ x 0 + 2² x 0 + 2 x 0 + 1 x 1 (64 + 1) === 1000001

    바로 위와 같이 표현을 해볼 수 있을 것이다.

     

    혹은 우리가 자주 사용하는 이모티콘(emoji)의 경우도 결국은 다 숫자이다.

    앞서 아스키코드에 대해서 말했는데 Unicode라는 표준에서는 더 많은 비트를 사용하더 더 다양한 문자들도 표현 가능 하도록 만들었다.

    ASCII로는 문자들을 표현하기에 충분하지 않았기 때문이다.

     

    만약 스마트폰을 통해서 "😂 (기쁨의 눈물)" 이런 이모티콘을 보냈다고 한다면, 결국 11111011000000010 이라는 패턴을 보낸 것이라고 할 수 있다.

    iOS 혹은 Android는 이런 패턴을 받아서 기쁨의 눈물이라는 이모지를 보여주게 되는 것이다.

     

    그림, 영상, 음악의 표현

    우리가 스크린을 통해서 그림, 영상 등을 보게 되면 하나의 큰 그림으로 보여지지만 사실 확대를 해보면 수 많은 작은 빨간색, 초록색, 파란색 점을 볼 수 있다.

    이를 픽셀(Pixel)이라고 부른다.

    각각의 픽셀은 세 가지 색을 서로 다른 비율로 조합하여 특정한 색을 갖게 한다.

    색을 섞는다는 표현도 괜찮을 것 같다.

    이런 작은 픽셀들을 연속적으로 이어붙여서 그림을 만든 것이며, Red, Green, Blue의 앞자리를 따서 RGB라고 표현하게 된다.

    반응형
Designed by Tistory.