[컴퓨터과학 개론] 2강 - 컴퓨터와 자료(2)

2025. 8. 22. 15:35·방송통신대학교/💻컴퓨터과학 개론

✅ 1. 데이터와 정보

(1) 데이터와 정보의 관계

  • I = P(D): information = process(data) 형태로 프로그램에 데이터를 넣으면 정보를 얻는 수식

(2) 데이터의 표현 형태

  • 데이터의 유형과는 무관하게 일관된 표현 방식인 비트 패턴을 사용하여 표현을 한다.
  • 즉, 문자, 정수, 실수, 이미지, 비디오, 오디오 등 모든 데이터의 표현은 비트 패턴으로 표현이 된다는 의미이다.
  • 메모리에 저장된 데이터 유형에 맞는 해석과 처리가 필요하고 이걸 해주는것이 입출력장치, 메모리, 프로그램/CPU이다.

(3) 데이터의 표현 단위

[ 비트: binary digit ]

  • 비트는 컴퓨터에서 데이터를 표현하기 위해  0 과 1로 표현하는 최소 단위이다.

[ 바이트: byte ]

  • 0과 1을 표현하는 하나의 비트를 8개 묶은것을 바이트(byte) 라고함. 즉, 1byte = 2^8 임.
  • 하나의 문자(예: 'A')나 작은 숫자 하나를 표현 할 수 있음.
  • 바이트 외에도 추가적으로 KB(2^10), MB(2^20), GB(2^30), TB(2^40), PB(2^50)... 등의 단위가 있음.

[ 워드: word ]

  • CPU가 한 번에 처리할 수 있는 데이터 단위를 의미한다.
  • CPU 구조에 따라 길이가 다름: 32비트 CPU -> 워드= 32비트 = 4바이트
  • 컴퓨터 연산의 기본 단위가 되는 정보의 양을 의미한다. 보통 32비트 , 64비트

✅ 2. 진법

(1) 진법 이란?

[ 진법 ]

  • 진법: 숫자를 나타내는 방법이다. 즉, 숫자를 표현하는 체계를 의미한다.
  • 쉽게말해, 한 자리 숫자가 가질 수 있는 값의 개수를 기준으로 하는 수 체계를 의미한다.
  • 예를들면, 십진법에서는 한 자리 숫자가 0~9까지 10개 값을 가질 수 있으므로, 진법이 10이다.
  • r 진법: 0, 1, ... , (r-1) 까지의 숫자만을 사용하는 진법을 r 진수 라고함. ( 2 진법 - 0, 1 / 8 진법 - 0 ~ 7 )
  • 컴퓨터에서는 2진법, 사람이 쓰는 수는 보통 10진법을 사용 한다.

[ 진수 ]

  • 진수: 진법의 숫자 체계를 사용해서 실제로 쓴 숫자를 의미한다. 즉, 실제 N진법으로 표현된 숫자이다.
  • 쉽게말해, 진법은 0과 1로 나타내는 방법을 말하고, 진수는 해당 방법을 통해서 만들어지는 숫자를 의미한다.
  • 예를들면, 1010(2진수) / 1001(2진수) 이렇듯 체계를 활용해서 만들어진 숫자를 의미함.
  • 진법의 숫자 체례를 사용해서 실제로 쓴 숫자를 의미한다.
  • 2진수 = binary, 8진수 = octal, 10진수 = decimal, 16진수 = hexadecimal 로 불림.

(2) 2진법

[ 2진수 -> 10진수 ]

1011₂ ( 2진수 -> 10진수 )
= 1×2³ + 0×2² + 1×2¹ + 1×2⁰
= 8 + 0 + 2 + 1 = 11₁₀
  • 사용 숫자: 0, 1
  • 용도: 컴퓨터 내부에서는 모든 데이터는 전기 신호 ON/OFF를 0과 1로 표현함. 즉, 데이터 처리 할 때 사용
  • 10진수 변환 과정에서는 1과 0으로 표현된 숫자에 모두 2를 곱하며, 각 자릿수에는 자릿수에 해당하는 지수를 올림.

 

(3) 8진법

[ 8진수 -> 10진수 ]

157₈ ( 8진수 -> 10진수 )
= 1×8² + 5×8¹ + 7×8⁰
= 64 + 40 + 7 = 111₁₀
  • 사용 숫자: 0 ~ 7
  • 용도: 과거 컴퓨터 시스템에서 메모리 주소 표현, 일부 프로그래밍에서 권한 표현 등
  • 10진수 변환 과정: 8진수 각 자릿수에 8을 곱하며, 해당 8에는 자릿수의 지수를 올려서 곱해야함.

(4) 10진법

345₁₀
= 3×10² + 4×10¹ + 5×10⁰
= 300 + 40 + 5
  • 사용 숫자: 0 ~ 9
  • 용도: 일상 생활에서 사용하는 숫자 체계
  • 예시처럼 일상 생활에서 사용하는 숫자 체계이므로, 각 숫자에 10을 곱하는데 자릿수를 지수로 올리면 그대로임.

(5) 16진법

[ 16진수 -> 10진수 ]

1A3F₁₆ ( 16진수 -> 10진수 )
= 1×16³ + 10×16² + 3×16¹ + 15×16⁰
= 4096 + 2560 + 48 + 15 = 6719₁₀

 

  • 사용 숫자: 0~9, A~F ( A=10, B=11, ...., F= 15)
  • 용도: 컴퓨터 메모리 주소, 컬러 코드 ,프로그래밍 등에 사용이 됨.
  • 0~9 까지는 숫자로 표현을 하고 나머지는 숫자를 문자로 표현을 함.
  • 진법의 각 숫자는 위치에 따라 서로 다른 가중치(자릿값) 를 가진다.
  • r진법의 자리값 r의 x승 (x는 숫자의 위치를 나타내는 정수)

(6) 10진수 정수 -> r진수 변환 방법

  • 2진수: 10진수의 값을 2로 분해하고 나머지를 수로 표현하면 됨. 마지막 나머지 포함
  • 8진수: 10진수의 값을 8로 분해하고 나머지를 수로 표현하면 됨.
  • 16진수: 10진수의 값을 16으로 분해하고 나머지를 수로 표현하면 됨.

  • 정수부분을 r진수로 변환 할 때 사용되는 알고리즘으로 볼 수 있음.

(7) 10진수 소수 -> r진수 변환 방법

  • 10진수 소수를 r진수로 변환 할 때 중요한건, 소수 부분만 두고 연속해서 2를 곱하면 된다. 또한, 2를 곱한 결과에서 소수 부분이 아닌 정수 부분의 숫자를 이진수로 표기 할 수 있음.
0.6875(10진수) -> 2진수 변환
1️⃣ 0.6875 × 2 = 1.375 → 정수 부분 1
2️⃣ 0.375 × 2 = 0.75 → 정수 부분 0
3️⃣ 0.75 × 2 = 1.5 → 정수 부분 1
4️⃣ 0.5 × 2 = 1.0 → 정수 부분 1
0.6875(10) = 0.1011(2)
  • 즉, 위와 같이 0.6875(10진수)를 2진수로 변환 할 때, 2를 곱해서 정수 부분을 빼 결과값인 0.1011(2) 를 얻을 수 있음.

  • 그 외 8진수와 16진수도 동일하게 각각 8과 16을 곱한 정수값을 r진수의 값으로 표현됨.

  • 10진수 소수를 r진수로 변환을 할 땐 위와 같은 알고리즘을 통해 변환 할 수도 있음.
  • 기존 정수를 r진수로 변환 할 땐 r진수의 r만큼 나누며, 몫을 통해 표현했다면, 소수는 곱셈으로 표현 하게 됨.
  • 10진수 소수부분에는 r진수의 r만큼 곱하며, 해당 정수부분을 진수로 사용하게 됨.

  • 또한, 위와 같이 무한소수는 특정 패턴이 반복되는 무한소수, 반복 패턴 없이 끝없이 이어지는 수(원주율)과 같은 비순환 무한소수가 존재 할 수 있음. 이러한 무한소수는 컴퓨터 자원이 한정적이다 보니, 실제로 정확한 값을 표현하기가 어려움.
  • 그래서, 컴퓨터에서는 무한한 소수를 특정 부분에서 끊어내서 근사치값으로만 표현을 하게 됨.
false : 0.6 == 0.1001 ( 이건 다른 숫자가 되는 것임. ) 
0.1001... 무한소수
  • 위와 같이 0.6 은 이진수 표현 -> 0.1001... 와 같이 무한소수 이므로, 표현이 불가능함. 0.1001 로 근사값을 표현만 하게 됨.
  • 위와 같이 0.6 == 0.1001 의 결과는 false 가 나옴. 이유는 무한 소수라 다르다고 말함.
  • 이 처럼 0.6 은 이진수로 표현되는 0.1001...와 같이 무한소수 이므로 컴퓨터에서 실수는 모두 근사값을 가지고 있음.
  • 즉, 얼마나 메모리를 더 써서 표현을 하느냐에 따라 실수가 더 정확하게 표현이 됨.

(8) r진수 간의 변환 방법

  • 2진수 -> 8진수, 16진수 변환: 2진수를 3개씩 묶어서 한 자리를 표현하면 8진수가 되고, 4개씩 묶어서 한 자리를 표현하면 16진수가 된다.
  • 8진수 -> 2진수 변환: 반대로 8진수 한 자리를 모두 이진수로 표현할 수 있음.
  • 16진수 -> 2진수 변환: 마찬가지로 16진수 한 자리를 모두 이진수로 표현 할 수 있음.
  • 예외적으로, 위와 같이 3개씩 4개씩 묶었는데 숫자가 부족하면 그것은 0으로 표기해서 변환 할 수 있음.

✅ 3. 정수 표현

  • 정수 자체는 실제 세계에서 무한이 표현이 가능함.
  • 하지만, 컴퓨터에서는 메모리 자체의 공간이 제한이 되어 있다보니까, 무한의 수를 표현 할 수 없음.
  • 즉, 컴퓨터에선 제한된 메모리 공간에 따라서 실제 나타낼 수 있는 정수의 범위가 결정이 됨.
  • 컴퓨터에서는 정수를 부호가 없는 정수와 부호가 있는 정수 두 가지로 표현을 함.

  • 부호 없는 정수: 부호를 사용하지 않기 때문에, 양수만 표현이 가능하고 bit 를 한 자리 더 사용하기 떄문에 범위증가
  • 부호 있는 정수: 부호 자체가 비트를 차지하기 때문에, 1byte(8bit) 에서 1bit 를 차지하게 되어서 표현하는 범위가 달라 질 수 있으며, 부호 자체가 1bit 를 차지하기 때문에, 1byte 가 표현하는 숫자 크기가 작아질 수 밖에 없게 됨.
  • 또한, 부호가 있는 정수는 최상위 비트가 부호 비트가 되며, 0은 양수 1은 음수를 표현함.4

[ 보수 ]

  • 어떤 2진수의 각 비트(0과 1)를 반전시킨 값을 의미한다.
  • 예시로는 2진수 0101의 1의 보수는 1010이며, 2의 보수는 1의 보수에 1을 더한 값이다.
  • 2의 보수 예시로는 1의 보수 1010 + 1 = 1011 이다.

(1) 부호 없는 정수

  • 부호 없는 정수: 부호를 사용하지 않기 때문에, 양수만 표현이 가능하고 bit 를 한 자리 더 사용하기 떄문에 범위증가
  • 또한, 1 byte(8 bit) 할당을 하고 275를 넣게 되면 오버플로가 발생할 수 있음. ( 할당 된 크기에 맞게 사용해야 함 )

(2) 부호 있는 정수

  • 부호 있는 정수: 부호 자체가 비트를 차지하기 때문에, 1byte(8bit) 에서 1bit 를 차지하게 되어서 표현하는 범위가 달라 질 수 있으며, 부호 자체가 1bit 를 차지하기 때문에, 1byte 가 표현하는 숫자 크기가 작아질 수 밖에 없게 됨.
  • 또한, 부호가 있는 정수는 최상위 비트가 부호 비트가 되며, 0은 양수 1은 음수를 표현함.
  • 부호 있는 정수에서 음수를 표현하기 위해서는 대표적으로 부호와-크기, 1의 보수, 2의 보수 세 가지 방식이 있음.

[ 부호 있는 정수 - 음수 표현 : 부호화-크기 ]

  • 위의 예시: -124(01111100) 을 절대값으로 맨 앞 비트(MSB)에는 부호를 0(양수) 1(음수) 로 표현을 함.
  • 즉, -124(01111100) -> -124(111111100) 로 바뀌어서 표현이 되게 됨.

[ 부호 있는 정수 - 음수 표현 : 1의 보수 ]

  • 1의 보수 표현 방식은 이진수로 된 모든 bit 1은 0으로 표현하고, 모든 bit 0은 1로 표현하는 방식임.
  • 즉, 양수의 모든 비트를 반전(0<>1) 시켜서 표현하는 방식이라고 보면 됨.

[ 부호 있는 정수 - 음수 표현 : 2의 보수 ]

  • 2의 보수는 1의 보수를 구한 뒤 해당 1의 보수에 +1 을 더한 표현 방식임.
  • 즉, 양수의 비트를 반전 시켜준 1의 보수에 +1 을 더해서 값을 구하는 방식임.
  • 실제 컴퓨터는 2의 보수 방식을 사용함. 해당 방식은 덧셈 회로로 뺄셈까지 처리 할 수 있음.

(3) 정수 표현 방법의 비교

  • 예를 들면, 2의 보수 방식으로 8비트로 표현된 정수 10100001 을 십진수로 구하게 된다면,
  • 먼저 2의 보수 방식 +1 을 역산하게 되면 10100001 -> 10100000 이 되게 된다.
  • 이후, 1의 보수 방식에서 반전을 역반전 시켜주면, 10100000 -> 01011111 이 되게 된다.
  • 이후, 01011111 을 이제 십진수로 표현 할 수 있으며, 결과는 -95가 나오게 된다.

 

✅ 4. 실수 표현

 

✅ 5. 문자 표현

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'방송통신대학교 > 💻컴퓨터과학 개론' 카테고리의 다른 글

[컴퓨터과학 개론] 6강 - 알고리즘(2)  (0) 2025.11.10
[컴퓨터과학 개론] 5강 - 알고리즘(1)  (0) 2025.11.10
[컴퓨터과학 개론] 4강 - 자료구조(2)  (0) 2025.09.19
[컴퓨터과학 개론] 3강 - 자료구조(1)  (0) 2025.09.17
[컴퓨터과학 개론] 1강 - 컴퓨터와 자료(1)  (3) 2025.08.20
'방송통신대학교/💻컴퓨터과학 개론' 카테고리의 다른 글
  • [컴퓨터과학 개론] 5강 - 알고리즘(1)
  • [컴퓨터과학 개론] 4강 - 자료구조(2)
  • [컴퓨터과학 개론] 3강 - 자료구조(1)
  • [컴퓨터과학 개론] 1강 - 컴퓨터와 자료(1)
junbin2
junbin2
java.lang.NullPointerException
  • junbin2
    bin's Development Diary
    junbin2
  • 전체
    오늘
    어제
    • 전체보기 (233)
      • 방송통신대학교 (87)
        • ⚙️컴퓨터의 이해 (11)
        • 💻컴퓨터과학 개론 (15)
        • 🔢자료구조 (14)
        • 🧬알고리즘 (10)
        • ⚙️운영체제 (14)
        • 🕸️이산수학 (11)
        • 🌍유비쿼터스 컴퓨팅 (11)
        • 🖥️컴퓨터과학과 (1)
      • 공부 (72)
        • 📚백엔드 공부 (6)
        • ☕Java (23)
        • 🌳Spring (13)
        • ⚙️C (12)
        • ⚡Python (15)
        • JavaScript (1)
        • 🛢️Database (0)
        • Algorithm Problem Solving (2)
      • 네트워크 (7)
        • 📜HTTP (7)
      • 스파르타코딩클럽 (64)
      • 정보 (2)
      • 정리가 필요한 글 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    컴퓨터과학과
    자바
    Java
    유비쿼터스
    배열
    C언어
    방송대
    컴퓨터의 이해
    그래프
    방송통신대학교
    자료구조
    이산수학
    Python
    컴퓨터과학 개론
    파이썬
    함수
    spring
    방통대
    알고리즘
    운영체제
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
junbin2
[컴퓨터과학 개론] 2강 - 컴퓨터와 자료(2)
상단으로

티스토리툴바