
1. 컴퓨팅 사고 computational Thinking, Scratch
1) 2진법
컴퓨터 과학은 문제 해결에 대한 학문이다
문제해결은 입력(input)을 전달받아 출력(output)을 만들어내는 과정이다
그 중간 과정이 컴퓨터 과학이다
입력과 출력을 표현하기 위해선 모두가 동의한 약속(표준)이 필요하다
2진법
0,1,2,3,4,5,6,7,8,9,10 총 10개의 기호로 표현하는 방법은 10진법
하지만 컴퓨터는 오직 0과 1로만 데이터를 표현하는 2진법을 사용한다
전기를 통해 연산하는, 즉 전기를 켜고 끄는 방식으로 작동하는 컴퓨터에게 적합한 방법이다
컴퓨터 안에는 많은 스위치(트랜지스터)가 있고 on/off 상태를 통해 0과 1을 표현한다
2진법에서 하나의 자릿수를 표현하는 단위를 비트(bit)라고 한다
비트 Bit
이진 숫자라는 뜻의 binary digit의 줄임말이다
0과 1, 두 가지 값만 가질 수 있는 측정 단위이다
컴퓨터 내부에서 물리적으로 표현하자면 켜고 끌 수 있는 스위치라고 생각할 수 있다 (켜기=1, 끄기=0)
디지털 데이터를 여러 비트들로 나타냄으로써 두 가지 값만을 가지고도 많은 양의 정보를 저장할 수 있다
또한 저장되어 있는 데이터를 수정하기 위해 비트에 수학적 연산을 수행할 수 있다
비트열
비트 한 개로는 많은 양의 데이터를 나타내기에 턱없이 부족하므로 여러 숫자 조합을 컴퓨터에 나타내기 위해 비트열을 사용한다
바이트(byte)는 여덟 개의 비트가 모여 만들어진 것이고 2^8 = 256 개의 서로 다른 바이트가 존재할 수 있다
바이트가 모이면 더 큰 단위가 될 수 있다
(비트 bit > 바이트 byte > 킬로바이트 KB > 메가바이트 MB > 기가바이트 GB > 테라바이트 TB)
2) 정보의 표현
문자의 표현
문자를 숫자로 표현 할 수 있는 약속(표준) 중 하나는 설명미국정보교환표준부호
ASCII (아스키코드/American Standard Code For Information Interchange)이다
총 128개의 부호로 정의되어 있다
ex) A를 2진법으로 표현하려면
- 아스키코드를 참고하여 A를 10진법으로 표현하면 65이다
- 2^5x1 + 2^5x0 + 2^4x0 + 2^3x0 + 2^2x0 + 2x0 + 1x1 (64+1)
- 2진법으로 표현하면 1000001
이 외에도 Unicode 유니코드로 더 많은 비트를 사용해 다양한 문자들도 표현가능하다
😂(기쁨의 눈물)과
스마트폰으로 이모티콘을 보내면 안드로이드 혹은 IOS는 0과 1의 패턴을 받아 노란 얼굴에 눈물을 흘리는 사진으로 보여준다
그림, 영상, 음악의 표현
문자와 마찬가지로 그림도 숫자로 표현할 수 있다
스크린의 그림을 자세히 보면 수많은 작은 점들이 빨간색, 초록색, 파란색을 띠고 있는데
이러한 작은 점을 픽셀 Pixel이라고 한다
픽셀은 세 가지 색을 서로 다른 비율로 조합해 특정한 색을 나타낸다
ex) 빨간색 72 , 초록색 72 , 파란색 33 = 노란색
위의 숫자들을 표현하는 방식을 RGB (Red, Green, Blue)라고 한다
영상 또한 수많은 그림을 빠르게 연속적으로 이어 붙여놓은 것이기 때문에 숫자로 표현이 가능하다
음악도 마찬가지로 각 음표를 숫자로 표현할 수 있다
3) 알고리즘
알고리즘 Algorithms
입력 input에서 받은 자료를 출력 output 형태로 만드는 처리과정
입력값을 출력값의 형태로 바꾸기 위해 어떤 명령들이 수행되어야 하는지에 대한 규칙들의 순서적 나열이다
알고리즘을 평가할 때는 정확성도 중요하지만 효율성도 중요하다
효율성은 작업을 완료하기까지 시간과 노력이 얼마나 덜 들이는지에 대한 것이다
의사코드 Pseudocode
컴퓨터가 수행해야 할 행동이나 조건의 절차를 명료하게 정리한 것
함수 Function
조건
불리언 Boolean
값(답)이 예 Yes, 아니오 No, 참 True, 거짓 False 2진법에선 0 또는 1로 나온다
루프 Loop (반복)
3번째 라인코드로 돌아가라는 반복
'궁금한게 많은 백구스 > CS' 카테고리의 다른 글
2진수, 8진수, 10진수, 16진수 왜쓰는거임? (1) | 2024.10.23 |
---|---|
[CS50/C언어] VSCode에서 CS50 라이브러리 사용하기 (0) | 2023.02.16 |
[CS50/C언어] C언어에서 1 나누기 10 의 소수점 값이 다른 이유, 정수 오버플로우 오류 (0) | 2023.02.15 |
[CS] 비전공자의 부족한 CS지식을 채워줄 무료 대학 강의 사이트 모음 (0) | 2023.01.19 |