CS50 1강[컴퓨팅 사고]
2진법(Binary)
0과 1로 숫자를 표현(글자, 사진, 영상, 소리 등을 저장)
비트(Binary Digit, bit)
0 또는 1 / 참 또는 거짓 (컴퓨터 용량이나 프로그램 처리능력의 최소 단위)
트랜지스터(Transfer Resistor) : 연산을 수행하는 가장 기본이 되는 소자(1비트) / CPU, 메모리, 그래픽 카드 등에 사용
- 읽는 방법 : 오른쪽부터 읽음
- LSB(Least Significant Bit) : 가장 작은 비트 / 가장 오른쪽에 있는 첫번째 비트
(예시 : 01100011 LSB는 1이다) - MSB(Most Significant Bit) : 가장 큰 비트 / 가장 왼쪽에 있는 첫번째 비트
(예시 : 01100011 MSB는 1이다)(부호비트라고도 부름) - 부호비트(Sign Bit) : 숫자의 부호(양수 또는 음수)를 나타내기 위해 사용되는 비트(0은 양수, 1은 음수)
1 byte = 8 bits
1 killobyte(KB) = 1024 bytes
1 megabyte(MB) = 1024 kilobyte(KB)
1 gigabyte(GB) = 1024 megabyte(MB)
1 terabyte(TB) = 1024 gigabyte(GB)
- 논리연산
① AND 연산
두 개의 bit를 AND 연산하면, 둘 다 1인 경우에만 결과가 1이 된다. 둘 다 1이 아니면 결과는 0이 된다. 예를 들어, 1 AND 0은 0이고, 1 AND 1은 1이다.
② OR 연산
두 개의 bit를 OR 연산하면, 하나의 bit만 1이어도 결과는 1이 된다. 두 bit가 모두 0인 경우에만 결과가 0이 된다. 예를 들어, 1 OR 0은 1이고, 0 OR 0은 0이다.
③ XOR 연산
두 개의 bit를 XOR 연산하면, 두 bit가 다를 때 결과가 1이 된다. 두 bit가 같으면 결과는 0이 된다. 예를 들어, 1 XOR 0은 1이고, 1 XOR 1은 0이다.
④ NOT 연산
bit의 값을 반전시킨다. 0은 1로, 1은 0으로 변환된다. 예를 들어, NOT 1은 0이고, NOT 0은 1이다.
- 니블(nibble) : 4개의 bit를 묶은 데이터 단위(0~15)
다양한 표현
ASCII(아스키코드/American Standard Code for Information Interchange)
: 7비트 부호로 128개의 숫자가 알파벳, 숫자, 특수문자, 제어문자를 할당함
아스키 문자표 : https://ko.wikipedia.org/wiki/ASCII
0 ~ 9 : 48~ 57으로 표현
A ~ Z : 65 ~ 90으로 표현
a ~ z : 97 ~122으로 표현
Unicode(유니코드)
: 전 세계의 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설계된 산업 표준이며, 유니코드 협회(Unicode Consortium)가 제정
- ISO 10646 문자 집합, 문자 인코딩, 문자 정보 데이터베이스, 문자들을 다루기 위한 알고리즘 등을 포함
- 글자와 코드가 1:1 매핑되어 있으며 운영체제나 프로그램 언어에 관계없이 문자마다 고유한 코드 값을 제공
- 언어와 상관 없이 모든 문자를 16비트로 표현하여 최대 65,536자 까지 표현
RGB(Red, Green, Blue)
: 빛의 삼원색을 뜻함
- 인쇄 매체의 경우에는 잉크체계를 사용해 특정 색을 흡수하고 나머지를 반사하기 때문에 RGB가 아닌 CMYK(K는 검은색)가 적용
알고리즘(Algorithm)
문제를 해결하기 위한 절차나 방법 / 어떠한 행동을 하기 위해서 만들어진 명령어들의 유한 집합(finite set)
❗️조건
- 입력 - 알고리즘은 0 또는 그 이상의 외부에서 제공된 자료가 존재해야한다.
- 출력 - 알고리즘은 최소 1개 이상의 결과를 가져야한다.
- 명확성 - 알고리즘의 각 단계는 명확하여 애매함이 없어야 한다.
- 유한성 - 알고리즘은 단계들을 유한한 횟수로 거친 후 문제를 해결하고 종료해야 한다.
알고리즘의 한 단계 이후 m의 값은 n 보다 작으며, m != 0이면 n의 값은 다음 번 단계에서 줄어든다. - 효과성(수행가능성) - 알고리즘의 모든 연산들은 사람이 종이와 연필을 이용하여 유한한 시간 안에 정확하게 수행할 수 있을 정도로 충분히 단순해야 한다.
📝 표현방법
'CS50 정리' 카테고리의 다른 글
CS50 6강[자료구조] (2) | 2024.02.25 |
---|---|
CS50 5강[메모리] (0) | 2024.02.21 |
CS50 4강[알고리즘] (0) | 2024.02.20 |
CS50 3강[배열] (0) | 2024.02.20 |
CS50 2강[C언어] (0) | 2024.02.20 |