69일차 CS50 [2진수, ASCII, 16진수, 이미지]

2022. 1. 13. 10:51
반응형

2022. 01. 12 수요일

CS50 강의 2일차이다. 아직까지는 무언갈 깊게 생각하고 고민해봐야 하는것이 많지 않은 것 같다. 그래서 일단은 그냥 개념 정리 위주로 정리할 예정이다.

여기에서 무료로 CS 강의를 들을 수 있고, 여기서 들은 것을 바탕으로 정리해보고자 한다.

개인 노션에도 따로 전체적으로 정리할 것이다.

오늘은 2진수, ASCII, 16진수, 이미지 강의를 들었다. 아래는 강의 자료를 기반으로 다시 정리해본 것이다.


4. 2진수 💡

개요

컴퓨터는 0과 1만을 사용하는 2진수라는 수 체계를 사용합니다. 사람은 0부터 9까지의 숫자의 조합으로 10, 826, 29325와 같은 숫자를 만들어 낼 수 있듯이, 컴퓨터도 0과 1의 조합으로 크고 작은 숫자와 다양한 문자를 만들 수 있습니다.


수 체계

  • 10진수 : 0부터 9까지 10개의 숫자를 이용하여 값을 표현할 수 있습니다.
  • 2진수 : 0부터 1까지 2개의 숫자를 이용하여 값을 표현할 수 있습니다. 컴퓨터는 전기적 신호 켜짐(1)과 꺼짐(0)을 이용하여 작동하기 때문에 2진수를 사용합니다.

2진수에서 숫자 세는 방법

2진수로 숫자를 세는 방법은 10진수에서 숫자를 세는 방법과 비슷하지만 0과 1 두 개의 수로만 제한된다는 차이가 있습니다. 2진수로 7을 표현하면, 111(4 x 1 + 2 x 1 + 1 x 1)이 됩니다.


5. ASCII 🔡

개요

우리가 컴퓨터로 주로 작성하는 것은 숫자가 아니라 문자입니다. ASCII는 문자를 컴퓨터가 이해할 수 있는 이진 데이터(0 또는 1)로, 혹은 그 반대로 변환하는 표준 방법입니다.


ASCII 인코딩 표준

ASCII는 컴퓨터가 텍스트 데이터를 저장하기 위해 흔하게 사용하는 표준코드체계입니다. 이 표준에서 숫자 65는 대문자 ‘A’와 대응됩니다. 따라서 컴퓨터가 대문자 ‘A’를 저장하고 싶다면 숫자 65를 이진수로 저장할 것입니다. 소문자 ‘a’는 숫자 97로 나타냅니다. 여기서 소문자는 같은 대문자 글자보다 항상 $2^5$만큼 큽니다. 따라서 $2^5$의 자릿수만 바꾸면 되기 때문에 소문자 대문자 간의 변환이 쉬워집니다.


ASCII의 한계

기본 ASCII 코드 표는 7비트만 이용해서 모든 문자들을 나타냅니다. 이것은 ASCII 코드로 $2^7$개, 즉 128개의 문자를 나타낼 수 있다는 것을 의미합니다. 확장 ASCII는 8번째 비트를 추가하여 256개의 문자를 나타낼 수 있도록 합니다. 소문자와 대문자 통틀어 52개 알파벳 밖에 없으므로, 그 외 남는 공간에 구분 기호, 숫자, 몇몇 기본 심볼들($나 % 기호 등) 같은 다른 종류의 문자들을 나타낼 수 있습니다.

하지만 8비트 ASCII 코드로도 나타낼 수 없는 문자들이 아직도 많이 있습니다. 예를 들어, 수학 기호들과 영어 외 다른 언어의 글자들은 표준 ASCII 표에 들어가기 힘듭니다. 이 때문에 훨씬 더 많은 문자들을 포함할 수 있는 유니코드가 생기게 됐습니다. 100만개 이상의 문자들을 나타낼 수 있는 문자 인코딩 표준입니다. 첫 128개의 문자는 ASCII의 128개의 문자와 동일하므로 서로 호환이 됩니다.


6. 16진수 🔢

개요

2진법은 컴퓨터가 이해할 수 있는 언어체계이지만, 많은 정보를 처리하는 컴퓨터에는 비효율적일 수 있습니다. 그래서 16진수로 표현하는 경우가 많습니다. 16진수를 사용하면 10진수보다 2진수를 간단하게 나타낼 수 있습니다.


10진수를 16진수로 바꾸어보기

$2^4$이 16이기 때문에 4bits씩 두 덩어리로 나누어 보면 0000부터 1111까지는 16진수로 표현할 수 있다는 것을 알 수 있습니다. 16진수에서 10부터 15까지 10은 a, 11은 b, ... 15는 f를 대입하여 사용합니다. 4bits씩 16진수로 변환 후 0x를 붙혀 뒤에 오는 문자들이 16진수임을 알려줍니다.


16진수의 유용성

16진수로 표현하면 2진수로 표현했을 때 보다 훨씬 간단해집니다. 컴퓨터는 8개의 비트가 모인 바이트 단위로 정보를 표현합니다. 2개의 16진수는 1byte의 2진수로 변환되기 때문에 정보를 표현하기 매우 유용합니다.


7. 이미지 🌄

개요

이미지 파일 형식으로 비트맵(.bmp), JPG(.jpg), PNG(.png), GIF(.gif) 등이 있습니다. 이 외에도 다양한 이미지 파일 유형들이 있고, 각각의 파일 유형들에는 장점과 단점이 있습니다. 어떤 파일 유형으로 저장하는가에 따라 이미지 파일이 더 크거나 작을 수 있고, 더 선명하거나 그렇지 않을 수 있습니다.


사진 파일에 들어있는 정보

사진을 찍어 이미지에 저장하면 그 이미지는 보통 JPEG라는 확장자를 갖게 되고 이미지를 압축하여 저장합니다. 이미지 파일은 보통 첫 부분에 파일을 구분할 수 있는 구분자를 넣어둡니다. JPEG의 첫 부분에는 16진수 단원에서 배웠던 것 처럼 255 216 255라는 10진수로 시작됩니다. 이렇게 JPEG 파일을 들여다보면 파일을 구분할 수 있는 정보가 처음에 보이고 나머지 정보들이 그 다음에 저장되게 됩니다.


파일 열고 쓰기

  • BMP : BMP 파일 형식은 이미지 데이터를 가장 단순하게 저장합니다. 대신 압축을 하지 않아 파일 크기가 크다는 단점이 있습니다. BMP 파일 형식 역시 파일의 가장 처음 부분에 비트맵 파일에 대한 정보가 있다는 것을 알 수 있습니다.
  • JPEG : JPEG 파일은 이미지를 압축하는 장점을 갖고 있으며, GIF 파일이 256색을 표시할 수 있는데 비해 JPEG는 1600만 색상을 나타낼 수 있어 고해상도를 나타내기에 적합합니다.
  • GIF : GIF는 이미지의 전송을 빠르게 하기 위한 압축저장 방식을 사용합니다. JPEG보다 압축률은 낮지만 압축 시 이미지의 손상이 적습니다.
  • PNG : PNG는 GIF와 JPEG의 장점만을 합쳐 놓은 압축방식 입니다. GIF보다 압축률이 좋고 JPEG보다 원본에 손상이 적어 효과적입니다.
반응형
LIST

'학습 TIL > CS50' 카테고리의 다른 글

71일차 CS50 [알고리즘2]  (0) 2022.01.14
70일차 CS50 [알고리즘1]  (0) 2022.01.13
68일차 CS50 [하드웨어/기억장치/비트와 바이트]  (0) 2022.01.12

BELATED ARTICLES

more