얇고 넓은 CS지식 - 데이터

박종일·2023년 7월 14일
0

데이터

컴퓨터는 사람과는 달리 모든 것을 0과 1로 표현합니다. 그렇다면 컴퓨터는 0과 1로 어떻게 사람들과 소통할 수 있을까에 대해서 생각해야합니다.

수 체계와 코드

  • 수 체계(Number system)사이의 변환
    - 10진법, 2진법, 8진법, 16진법

  • 16진법의 장점, 16진법의 계수

  • 아스키 코드

    컴퓨터가 표현하는 정보 단위를 학습하고 0과 1만으로 숫자를 표현하는 방법에 대해서 배워야합니다.

    정보 단위

    우선 컴퓨터가 이해하는 가장 작은 정보 단위부터 알아보아야 합니다. 0과 1를 나타내는 가장 작은 정보 단위를 비트라고 합니다.

    웹 브라우저, 워드 프로세서, 포토샵 등 우리가 실행하는 모든 프로그램은 수십만, 수백만 개 이상의 0과 1로 이루어져 있습니다. 다시 말해 우리가 실행하는 프로그램은 수십만 비트, 수백만 개 이상의 0과 1로 이루어져 있습니다. 그런데 프로그램 크기를 말할 때, 비트보다 큰 단위를 사용하게 됩니다. 그래서 바이트, 킬로바이트, 메가바이트, 기가바이트, 테라바이트 등입니다.

워드(word)
워드란 CPU가 한 번에 처리할 수 있는 데이터 크기를 의미합니다. 만약 CPU가 한 번에 16비트를 처리할 수 있다면 1워드는 16비트가 되고, 한 번에 32비트를 처리할 수 있따면 1워드는 32비트가 되는 것입니다.

이렇게 정의된 워드의 절반 크기를 하프 워드, 1배 크기를 풀 워드, 2배 크기를 더블 워드라고 부릅니다. 워드 크기가 큰 CPU는 한 번에 처리할 수 있는 데이터가 많습니다. 워드 크기는 CPU마다 다르지만, 현대 컴퓨터 워드 크기는 32비트 또는 64비트 입니다. 인텔의 x86 CPU는 32비트 워드 CPU, x64 CPU는 64비틑 워드 CPU 입니다.

이진법

수학에서 0과 1만으로 모든 숫자를 표현하는 방법을 이진법이라고 합니다.
이진법을 이용하면 1보다 큰 수도 0과 1만으로 표현할 수 있습니다. 원리는 숫자가 1을 넘어가는 시점에 자리 올림을 하면 됩니다.

십진수이진수
11
2 10
311
4100
5101
6110
7 111
81000

이진수의 음수 표현

0과 1만으로 음수를 표현하는 방법 중 가장 널리 사용되는 방법은 2의 보수를 구해 이 값을 음수로 간주하는 방법입니다. 2의 보수의 사전적 의미는 '어떤 수를 그보다 큰 2^n에서 뺀 값'을 의미합니다. 예를 들어, 11(2)의 2의 보수는 11(2)보다 큰 2^n, 즉 100(2)에서 11(2)을 뺀 01(2)이 되는 것입니다.
하지만, 굳이 이렇게 사전적 의미로 어렵게 이해하지 않아도 됩니다. 2의 보수를 매우 쉽게 표현하면 '모든 0과1을 뒤집고, 거기에 1을 더한 값'으로 이해하면 됩니다. 예를 들어, 11(2)의 모든 0과 1을 뒤집으면 00(2)이고, 거기에 1을 더한 값은 01(2)입니다. 즉, 11(2)의 2의 보수(음수 표현)는 01(2)이 되는 것 입니다.

  • 어? 이진수만 보고 양수인지 음수인지 어떻게 구분하지?

실제로 이진수만 봐서는 이게 음수인지 양수인지 구분하기 어렵습니다. 그래서 컴퓨터 내부에서 어떤 수를 다룰 때는 이 수가 양수인지 음수인지를 구분하기 위해 플래그를 사용합니다. 플래그는 쉽게 부가 정보입니다. 컴퓨터 내부에서 어떤 값을 다룰 때 부가 정보가 필요한 경우 플래그를 사용합니다. 컴퓨터 내부에서 숫자들은 '양수' 혹은 '음수가 적혀 있는 표시를 들고 다니므로 컴 퓨터가 부호를 헷갈릴 일은 없다 정도로만 생각해도 무방합니다.

참고 - 2의 보수 한계 (산술 넘침)

오버플로는 두 개의 양수 또는 두 개의 음수가 있을 때만 발생할 수 있습니다.
이는 항상 잘못된 결과를 생성합니다.

십육진법

10진법도 아닌 어중간한 16진법을 컴퓨터 분야에서 사용하는 이유는 16진수 자릿수 하나가 2 4을 표현할 수 있기 때문이다. 예를 들어서, 2진법으로 했을 때 1바이트의 값을 "0101 1111"로 표현할 수도 있지만 16진법으로 "0x5F"로도 표현할 수 있습니다.
따라서 2진법보다 자릿수를 덜 차지하기 때문에 효율이 좋아진다는 점입니다.

십육진법은 수가 15를 넘어가는 시점에 자리 올림을 숫자 표현 방식입니다. 그리고 십진수 10,11,12,13,14,15를 십육진법 체계에서는 A,B,C,D,E,F로 표기합니다.

그런데 왜 굳이 십육진법을 사용할까요? 우리가 편하게 쓰는 십진법도 있는데 말입니다. 여러 가지 이유가 있지만, 십육진법을 사용하는 주된 이유 중 하나는 이진수를 십육진수로, 십육진수를 이진수로 변환하기 쉽기 때문입니다.

십육진수를 이진수를 변환하기

이진수를 십육진수로 변환하기

0과 1로 문자를 표현하는 방법

아스키 코드, 유니코드 등은 컴퓨터가 이해할 수 있는 0과 1로 다양한 문자를 표현하는 방법입니다. 여러 가지 문자 표현은 무엇이 있을까요?

문자 집합과 인코딩

0과 1로 문자를 표현하는 방법에 대해 알아보기 전에 여러분이 반드시 알아야 할 세 가지 용어가 있습니다. 바로 문자 집합, 인코딩, 디코딩입니다.

컴퓨터가 인식하고 표현할 수 있는 문자의 모음을 문자 집합이라고 합니다. 컴퓨터는 문자 집합에 속해 있는 문자를 이해할 수 있고, 반대로 문자 집합에 속해 있지 않은 문자는 이해할 수 없습니다. 문자 집합에 속한 문자라고 해서 컴퓨터가 그대로 이해할 수 있는 건 아닙니다. 문자를 0과 1로 변환해야 비로소 컴퓨터가 이해할 수 있습니다. 이 변환 과정을 문자 인코딩이라 하고 인코딩 후 0과 1로 이루어진 결과값이 문자 코드가 됩니다. 같은 문자 집합에 대해서도 다양한 인코딩 방법이 있을 수 있습니다.

인코딩의 반대 과정, 즉 0과1로 이루어진 문자 코드를 사람이 이해할 수 있는 문자로 변환하는 과정은 문자 디코딩이라고 합니다.

정리하면 컴퓨터가 인식할 수 있는 문자들의 모음은 문자 집합, 이 문자들을 컴퓨터가 이해할 수 있는 0과 1로 변환하는 과정을 인코딩, 반대로 0과 1로 표현된 문자 코드를 사람이 읽을 수 있는 문자로 변환하는 과정을 디코딩이라고 합니다.

아스키 코드

참고

컴퓨터 키보드에 있는 문자와 기능을 나타냅니다.
소문자 26자, 대문자 26자, 숫자 10자, 구두점 7자, 기타 20~40자

profile
존경하는 인물: 스토브리그 백승수 단장(남궁민)

0개의 댓글