​개요

뭔소린지 모르지만 정리하는 컴퓨터 언어 체계

 

 


언어

언어는 기호의 집합으로 인코딩된 것

의사소통을 위해서 당사자들이 같은 문맥을 공유하여 같은 기호에 같은 뜻을 부여할 수 있어야 한다.

 

문자 언어

 기호를 순서대로 나열하여 의미를 부여한 것

 

언어의 틀

- 기호가 들어갈 상자

- 상자에 들어갈 기호

- 상자의 순서

 

 

비트

Bit = Binary + Digit

 

기호가 들어갈 상자를 자연어에서는 문자, 컴퓨터에서는 비트라 한다.

비트는 2진법을 사용한다는 바이너리(Binary)와 숫자를 뜻하는 디지트(Digit)가 결합된 말이다.

 

비트의 틀

- 0과 1이 들어갈 비트

- 비트에 들어갈 0과 1

- 비트의 순서

 

 


논리 연산

비트 사용법 중 하나로 참과 거짓을 표현하는 것

A가 참이고 B가 거짓이면 C는 참이다.

다른 비트들이 표현하는 내용으로 새로운 비트를 만들어내는 동작논리 연산(Logic Operation)이라 한다.

 

불리언 대수 (불 대수)

1854년 영국 수학자 조지 불(George Boole)이 논리학 체계를 표현하기 위해 제안한 시스템

샤논(C. Shannon)은 2가지 값만 갖는 불리언 대수를 연구하여 스위칭 대수(Switching Algebra) 시스템을 고안

 

불리언 연산자

 

NOT - 논리적 반대'를 의미. ( NOT거짓 = 참 / NOT참 = 거짓 )
AND - A가 참이고 B가 참이면 결과는 참.
- 2비트보다 더 많은 비트에 연산을 적용하는 경우 모든 비트가 참이면 AND 연산의 결과도 참이다.
OR - A가 참이거나 B가 참이면 결과는 참
- 2 비트보다 더 많은 비트에 연산을 적용하는 경우 한 비트라도 참이면 OR 연산의 결과도 참이다.
XOR - A와 B 두 값 중 어느 하나가 참이면 참 / A와 B 두 값 모두가 참이면 거짓
- 첫 번째 비트와 두 번째 비트가 다른 값인 경우에만 참이 된다.

 

 

드모르간의 법칙

 

a AND b = NOT(NOT a OR NOT b)

 

1800년대 영국 수학자인 오거스터스 드모르간(Augustus De Morgan)의 이름을 딴 법칙

 

 

 


정수를 비트로 표현하는 방법

양의 정수

 

한 자릿수에 0~9까지 사용하는 일반적인 10진수와 다르게

컴퓨터는 한 비트에 0, 1을 표시하는 2진수를 사용한다.

 

 

LSB : 가장 작은 유효 비트 ( Least Significant Bit )

MSB : 가장 큰 유효 비트 ( Most Significant Bit )

 

 

2진수 덧셈

 

2진수는 LSB에서 MSB 쪽으로 더하며, 결과가 1보다 크면 1을 다음 자리의 비트(왼쪽)로 올린다.

 

 

음의 정수

음의 정수 표현 방법

부호와 크기 설명 - MSB의 비트 값을 부호로 사용한다.
문제점 - 0을 표기하는 방법이 두 가지가 발생하는 문제가 발생한다. ( +0, -0 )
- 비트의 덧셈이 불가능하다.
1의 보수 설명 - 양수의 모든 비트를 뒤집어 음의 비트를 표현한다.
- MBS의 올림을 LSB로 순환올림한다.
문제점 - 0을 표기하는 방법이 두 가지가 발생하는 문제가 발생한다. ( +0, -0 )
- 순환올림을 처리하기 위한 하드웨어가 추가되어야 한다.
2의 보수 설명 - 양수의 비트를 뒤집고 1을 더한 값을 음수로 표현한다.
- 2의 보수 덧셈의 올림 비트는 무시한다.

 

 

 


실수를 표현하는 방법

고정소수점 & 부동소수점

고정소수점 설명 - 고정 소수점을 사용하여 정수와 분수 부분을 표현
문제점 - 분수 부분의 분모가 2의 제곱으로 표현되어 메모리 비용이 많이 들어간다.
( 1/2²¹을 표현하기 위해서는 20개가 넘는 비트가 사용되어야 한다. )
부동소수점 설명 - 가수와 지수를 활용하여 표현
- 가수 * 2^(지수)
문제점 - 비트 조합에 낭비되는 부분이 있음 (ex. 0을 표현하는 방식이 4가지가 된다.)
- 지수가 커질 수록 가수의 값 차이가 커져, 특정 값의 표현이 어렵다.

 

 

IEEE 부동소수점

- S : 부호 비트 (양수 : 0 , 음수 : 1)

 

- 지수 : 소수점의 위치를 나타낸다. 2^(지수)

* 지수의 표현은 Bias라는 고정된 편향값 값을 더한 값의 2진수로 표현한다.

( 127 (32bit의 Bias) + 6 = 133 = 10000101 / 127 + ( -126 ) = 1 = 00000001 )

 

- 가수 :  가수를 조정하여 가장 왼쪽의 0이 없도록 하며, 맨 앞의 수가 1이라는 사실을 알고 있으므로 생략한다.

( 91 = 1011011 → 0000000000000000101101110110110000000000000000 → 01101100000000000000000 )

 

IEEE
부동소수점
기본 - 32 비트를 사용 (편향값 : 127)
2배 - 64 비트를 사용 (편향값 : 1023)

 

 

 


2진수 표현법

2진 코드화한 10진수 시스템 (BCD)

 

 

2수를 다루는 방법

 

진법 표기법

진법 표기법 설명
10진수 303 1~9 로 시작하는 숫자는 10진수 이다.
8진수 0457 0 으로 시작하는 숫자는 8진수 이다.
16진수 0x12f 0x 가 앞에 붙은 숫자는 16진수이다.

 

 

 


비트의 그룹 표현

작은 단위인 비트를 효율적으로 사용하기 위해 조직화하여 사용한다.

현재는 8비트 덩어리가 기본으로 사용되기 시작했고 이를 바이트(Byte)라고 부른다.

 

워드 컴퓨터가 설계상 빠르게 처리할 수 있는 비트의 묶음의 크기

* int, float이 4byte(32bit, 1word)의 크기를 갖는 것과 관련이 있는건가

 

 

 


텍스트 표현

아스키 코드

텍스트의 표현 방식으로 정보 교환을 위한 미국 표준 코드 (ASCII / 아스키) 가 사용된다.

아스키 코드는 글자를 출력과 장치를 제어하기 위해 사용되는 제어 문자가 있다.

 

초기 컴퓨터는 대부분 미국/영국산으로 아스키 코드는 영어를 표현하는데 필요한 문자를 포함하고 있다.

그러나 컴퓨터가 널리 사용됨에 따라 각기 다른 표준이 만들어졌고, 비트의 가격이 떨어짐에 따라 유니코드라는 새로운 표준이 만들어 졌다.

 

유니코드

16 bit (2 byte)를 사용하여 세계 모든 언어의 문자와 기호에 코드값을 부여

유니코드는 문자 코드에 따라 다른 인코딩을 사용한다. ( 다른 문자들 사이의 중개자 )

인코딩 : 다른 비트 패턴을 표현하기 위해 사용되는 비트 패턴

 

UTF (유니코드 인코딩 방식)

UTF-8 8 bit를 사용하여 1개의 Index를 표현 ( 보통 8 사용 )
UTF-16 16 bit를 사용하여 1개의 Index를 표현 ( 운영체제에서는 16을 씀 )
UTF-32 32 bit를 사용하여 1개의 Index를 표현

 

UTF-8 (유니코드 변환 형식 8비트)

UTF-8은 문자를 8비트 덩어로 (옥텟, Octet)의 시퀀스로 인코딩한다.

 

 

 

 


문자를 사용한 수 표현

출력 가능하게 변경한 인코딩 (QP)

8비트 데이터를 7비트 데이터만 지원하는 통신 경로를 통해 송수신하기 위한 인코딩 방법

= 다음에 바이트의 각 니블을 표현하는 16진 숫자 2개를 추가해 8비트 값을 표현한다.

* 여기서 =는 특별한 의미를 지니기 때문에 =를 표현하기 위해서는 =3D (= : 3D) 를 사용해야 한다.

QP 인코딩은 1바이트(=)를 표현하기 위해 3바이트(=3D)를 사용하기 때문에 비효율적이다.

 

 

베이스64 인코딩

Binary Data를 텍스트로 변경하는 인코딩 방식중 하나이다.문자코드에 영향을 받지 않는 공통 64개의 아스키(ASCII) 영역의 문자들로 이루어진 문자열로 변경하는 방식이다.베이스64 인코딩은 3바이트 데이터를 4문자로 표현한다.3바이트의 24비트를 6비트의 덩어리로 나누고 6비트에 출력 가능한 문자를 할당해 표현한다.

 

 

Padding

인코딩 과정중 남은 바이트가 3바이트 미만인 경우 남은 부분에 패딩 비트 (0) 가 추가된다.

 

 

URL 인코딩

URL은 ASCII 문자 집합을 사용하여 인터넷을 통해서만 전송 가능하다

URL 인코딩은 안전하지 않은 ASCII 문자를 '%' 뒤에 두 개의 16진 표현을 덧붙이는 방식으로 인코딩한다.

 * URL에서 의미를 갖는 '/'를 단순한 문자 '/'로 표현하고 싶으면 %2F ( / : 2F ) 로 표현한다.

 

 

 


색을 표현하는 방법

 

픽셀 (Pixel) : 그림 원소 (Picture Element)의 줄임말로 몸눈의 각 격자에 찍는 점을 의미한다.

 

 

8비트 (0~255) * { 삼원색 (Red, Green, Blue) + 투명도 } = 32 비트

 

색 인코딩

웹 페이지에서는 UTF-8 문자의 시퀀스로 이루어지는 텍스트를 표현하기 때문에 16진 트리플렛으로 표현한다.

 

 

#rrggbb

 

#000000 : 검은색 , #ffffff : 흰색

* 웹 페이지에서도 a(투명도) 값을 사용할 수 있지만, 전혀 다른 방식이 사용된다.

 

 

728x90

'Program > Program' 카테고리의 다른 글

드로우 콜(Draw call)과 최적화  (0) 2023.02.09
Rendering Pipeline  (0) 2022.09.08
컴퓨터 동작 원리  (0) 2022.04.21
프로그래밍 개념  (0) 2022.04.06

+ Recent posts