이진수 체계:
0과 1 두 가지 숫자만을 사용하여 수를 나타내는 수의 체계
이진수는 2진법이라고도 불리며, 0과 1을 사용하여 숫자를 표현
각 자리는 2의 거듭제곱으로 표현되며, 오른쪽에서 왼쪽으로 갈수록 2의 지수가 증가
이진수에서 오른쪽에서 왼쪽으로 진행하면서 자리마다 2의 지수에 해댕하는 값을 할당하고,
그 값에 0 또는 1을 곱해서 해당 자리의 값을 구한다.
📌ㄴ EX.
// 이진수 1010 를 10진수로 표현 --- 1 * 2^3 + 0 * 2^2 + 1 * 2^1 + 0 * 2^0 = 8 + 0 + 2 + 0 = 10
이진수는 컴퓨터에서 데이터를 표현하는데 효율적이다.
-> 컴퓨터 시스템의 메모리와 프로세서는 0과 1의 상태를 쉽게 표현하고 퍼리할 수 있기 때문에, 이진수를 사용하여 데이터를 저장하고 연산을 수행한다.
이진수로 비트와 바이트 같은 작은 단위로 데이터를 표현하는 것이 가능하고,
데이터의 크기를 효율적으로 관리할 수 있다.
논리 연산에서는 이진수의 입력과 출력을 기반으로 논리적인 연산을 수행하며,
논리 연산의 진리값을 표현하는 데 사용된다.
📌 EX.
// 이진수로 표현한 10진수 숫자 --- 7: 이진수로는 '111' 세 개의 비트가 모두 1로 채워져 있다. 이진수에서 가장 오른쪽 비트부터 2^0, 2^1, 2^2 순서로 값이 할당되고, 해당 비트가 1인 경우 해당 값을 더한다.
비트:
컴퓨터에서 정보를 표현하는 가장 기본적인 단위이다.
"binary digit"의 줄임말
= 이진수 체계에서 0과 1 두 가지 값을 가질 수 있는 최소한의 단위
📌 EX.
// 이진수로 표현한 10진수 숫자 7: 이진수로는 '111' 세 개의 비트가 모두 1로 채워져 있다. 이진수에서 가장 오른쪽 비트부터 2^0, 2^1, 2^2 순서로 값이 할당되고, 해당 비트가 1인 경우 해당 값을 더한다.
바이트:
컴퓨터에서 데이터를 저장하고 처리하는 데 사용되는 단위이다.
바이트는 여러 개의 비트를 모아놓은 형태로, 보통 8개의 비트로 이루어져 있다.
정보를 더 큰 단위로 나타내기 위해 사용된다.
컴퓨터 메모리는 주로 바이트 단위로 관리된다.
다양한 데이터를 표현하는데 사용된다.
컴퓨터의 데이터 저장과 처리에서 중요한 개념이다.
EX. "Hello"라는 문자열을 각 문자를 ASCII 코드에 맞게 바이트로 표현한다.
EX.
bit와 Byte 정보 단위
**bit와 Byte 정보 단위**단위 | 바이트(B) | 비트(b) |
---|---|---|
비트(bit) | 1/8 바이트 | 1비트 |
바이트(Byte) | 1 바이트 | 8 비트 |
킬로바이트(KB) | 1000 바이트 | 8000 비트 |
메가바이트(MB) | 10^6 바이트 | 8 x 10^6 비트 |
기가바이트(GB) | 10^9 바이트 | 8 x 10^9 비트 |
테라바이트(TB) | 10^12 바이트 | 8 x 10^12 비트 |
ASCII (American Standard Code for Information Interchange)
가장 일반적으로 사용되는 문자 인코딩 중 하나
ASCII는 7비트로 구성
-> 각각의 비트 조합은 128개의 고유한 문자를 나타낸다.
ASCII 코드는 영어 알파벳, 숫자, 특수 문자 등을 포함
(EX. 문자 'A' -> ASCII 코드에서 65에 해당하는 값으로 표현 (이진수 : 01000001))
📌 7비트만 사용하는 이유
- 7비트로 표현된 ASCII 코드
-> 2^7 = 128개의 고유한 값을 나타낼 수 있다.- 이는 영어 알파벳, 숫자, 특수 문자 등을 포함한 기본적인 문자 집합을 표현하기에 충분하다.
-> 초기 컴퓨터 시스템에서는 주로 영문 텍스트를 다루기 때문에 7비트로 구성된 ASCII 코드가 널리 사용되었다.- 7비트 ASCII는 0부터 127까지의 값을 사용하여 문자를 나타냄
(EX.'A' -> 65, 'a' -> 97)
-> 나머지 128부터 255까지의 값은 사용되지 않거나,
다른 문자 인코딩 체계에 따라 확장 문자나 특수 문자로 사용될 수 있다.
=> ASCII 문자 코드 표
1. 해당 문자의 왼쪽에 있는 2진 코드가 ASCII 코드가 되는 것
2. 예로 문자 ‘A’의 왼쪽에 있는 1000001이 ‘A’의 ASCII 코드가 된다.
확장(extended) ASCII:
“We”를 8비트 형식의 ASCII로 나타냄
그러나 ASCII로는 영어와 몇 가지 특수 문자만을 표현할 수 있고, 각 나라별 언어를 표현할 수 없다.
-> 이런 문제를 해결한 코드 -> 유니코드 와 UTF-8
EX.
EX.
📌 가변길이
- 유니코드에 먼저 등록된 영어와 숫자같은 문자는 1byte,
그뒤에 등록된 문자는 4byte
-> 차별적 혹은 가변적으로 할당하는 방법을 택했다.
EX. 유니코드별 Byte 할당
-> 이제, byte 별로 가변길이 구분짓기 위해 첫바이트에 표식을 추가
- 1byte는 0으로 시작,
- 2byte는 110으로 시작하고,
- 3byte는 1110으로 시작,
- 4byte는 11110으로 시작,
- 나머지 byte는 10으로 시작
EX.- 곰 -> U+ACF0(표상 3바이트 범위)
- "a" -> U+0061(1바이트 범위)
-> 1바이트의 표시형식을 참고하여 다음과 같이 인코딩된다.
📌 유니코드같이 큰 단위의 바이트를 사용하면 모든 숫자나 문자 등을 표현할 수 있는데,
프로그래밍을 하면 UTF-8 같이 다양한 데이터 타입을 사용하는 이유?
- 컴퓨터는 받아들이는 모든 정보를 메모리에 저장한다.
(EX. 1과 같은 작은 수를 표현하는데 4Byte를 사용해서 표현하게 되면,
그만큼의 메모리가 낭비된다.)- 메모리가 넉넉하지 못한 환경에서 동작하는 프로그램을 사용한다면,
효율적으로 메모리를 사용하는 것이 중요하기 때문에 UTF-8 같이 다양한 데이터 타입을 사용하는 것이다.
ASCII vs 유니코드 vs UTF-8
컴퓨터에서 숫자를 표현하기 위해 비트의 조합을 사용
각 비트는 0 또는 1의 값을 가질 수 있다.
-> 여러 비트를 조합하여 숫자를 나타낸다.
비트:
컴퓨터의 메모리나 레지스터와 같은 장치에 저장된다.
부호 있는 정수는 양수와 음수를 모두 표현할 수 있다.
일반적으로 2의 보수 (two's complement) 표현 방식을 사용한다.
양수는 부호 비트가 0으로 표현
음수는 부호 비트가 1로 표현
(EX. 8비트로 표현된 부호 있는 정수,
숫자 -42 -> 이진수로 11010110로 표현)
📌 2의 보수
1. 42의 이진수 표현
- 42는 이진수 -> 00101010로 표현
2. 1의 보수- 2의 보수 변환을 위해 42의 이진수에 대해 1의 보수를 취한다.
-> 1의 보수는 0을 1로, 1을 0으로 반전시키는 작업이다.- 42의 1의 보수 -> 11010101
- 00101010를 반전한다.
3. 2의 보수- 1의 보수를 취한 결과에 1을 더함
-> 2의 보수- 11010101 + 1 = 11010110
-> -42를 음수로 표현한 2의 보수 표현
42를 2의 보수로 변환 -> -42로 표현된다.
=> 2의 보수 방식은 부호 있는 정수 표현에서 음수 값을 표현하는 데에 주로 사용된다.
소수점을 가지는 숫자를 표현
일반적으로 부동 소수점 표현 방식을 사용
-> 가수와 지수를 이용하여 실수를 표현하는 방법
부동 소수점은 정밀도와 범위를 조절할 수 있다.
(EX. 대부분 IEEE 754 표준을 따른다.)
컴퓨터는 비트로 숫자를 저장하고 처리하기 때문에
-> 숫자의 크기, 정밀도, 부호 등을 조절하여 다양한 숫자 자료를 표현할 수 있다.
숫자를 이진수로 변환
-> 이진수를 다시 숫자로 변환하여 컴퓨터에서 숫자를 표현하고 계산한다.
EX.
=> 컴퓨터에서 멀티미디어 자료를 표현하기 위해서는
-> 해당 유형의 데이터를 해석하고, 디코딩하고, 필요한 경우 재생성 및 렌더링하는 소프트웨어 또는 하드웨어가 필요하다.