-
숫자를 나타내는 방법들 | Harvard CS 50 Week 0Computer Science/CS 50 Harvard 2021. 10. 26. 05:51
숫자를 세는 다양한 방법들
한 방에 몇명이 있는지 셀 때, 아마 우리는 손가락을 사용해서 1인당 1개의 손가락을 사용할것이다. 이 시스템은, unary(단항)라고 부르는데, 각각의 digit이 1을 의미하는것이다. 만약, 더 큰 숫자를 세야한다면, 우린 아마도 ten digits, 0부터 9라는 숫자들을 사용하는데, 이것을 decimal(십진법)이라고 부른다. 컴퓨터는 이보다 간단한 시스템을 쓰는데, 0과 1만을 사용하는 binary(이진법)이다.
Binary (이진법)
binary에서 0은 아래같이 나타낼 수 있다.
0 0 0
그리고 이것은 1이다 (여기서, 우리는 앞에 0 0 은 사실 안써도 되지만, 패턴을 간소화 하기위해서 붙여준것이다)
0 0 1
그리고, binary에서는 숫자 2가 존재하지 않기 때문에, 1 다음 숫자를 나타내기 위해 그다음 숫자를 바꾸어주어야한다. 영상에서 이 부분을 전구를 이용해서 설명해주는데, 정말 대단한 강의다. 사실, 컴퓨터도 전기 신호로 끄고 켜는것을 이용한 원리기 때문에 정말 좋은 설명이라고 생각한다. 강의 무대 앞에 전구가 엄청많이 놓여져있었는데 다 빅픽쳐였다.
0 1 0
그다음, 3을 나타내기 위해선 다시 1을 더해준다.
0 1 1
그리고 2와 같이 4를 나타내기 위해선 또다시 그다음 숫자를 바꿔주고....
1 0 0
5는....
1 0 1
6은...
1 1 0
그리고 7은....
1 1 1
이 binary에서 각강ㄱ의 숫자는 bit 이라고 부른다. 좀전에도 언급했듯이, 컴퓨터는 전기로 동작을 하고, 전기는 우리에게 on or off, 즉 켜고 끄는것으로만 소통을 하기때문에, 1과 0으로 나타낸다. 컴퓨터에는 수백만개의 아주 미세한 스위치들이 들어있는데, 이것들을 transistors(트랜지스터들)라고 하고, 이것을 이용해서 다양한 다른 숫자들을 나타낼 수 있다.
binary에서 여러 bits를 세는 패턴과 decimal에서 여러 bits를 세는 패턴은 같다. 예를들어 백이십삼 이라는 숫자를 생각해보자.
1 2 3
3은 1의 자리에, 의미하고 2는 10의자리, 1은 100의자리에 있다. 즉 123의 계산은 100×1 + 10×2 + 1×3 = 100 + 20 + 3 = 123 이다. 각각의 자리는 power of 10을 의미한다. 가장오른쪽은 10^0, 중간은 10^1, 가장 왼쪽은 10^1을 의미한다.
10^2 10^1 10^0 1 2 3
이진법에서는 이것을 2를 이용해서 하는것이다.
2^2 2^1 2^0 # # #
이것은 십진법으로 나타냈을때 아래와 같다.
4 2 1 # # #
세개의 전구가 있고, 모든 전구가 꺼져있다면 그것은 0을 의미한다.
4 2 1 0 0 0
만약 7보다 높은 숫자를 세고싶다면, 한개의 digit을 더해주면 된다. 예를들어 8은 아래와 같다.
1 0 0 0
대부분의 컴퓨터는 8bits를 한번에 쓰는데, 예를들어 3은 아래와 같이 나타낸다.
0 0 0 0 0 0 1 1
Reference
Week 0 - CS50
Introduction to the intellectual enterprises of computer science and the art of programming. This course teaches students how to think algorithmically and solve problems efficiently. Topics include abstraction, algorithms, data structures, encapsulation, r
cs50.harvard.edu
'Computer Science > CS 50 Harvard' 카테고리의 다른 글
Pseudocode | Harvard CS 50 Week 0 (0) 2021.10.30 Algorithms | Harvard CS 50 Week 0 (0) 2021.10.29 Images, video, sounds | Harvard CS 50 Week 0 (0) 2021.10.28 글자와 이모티콘을 컴퓨터가 어떻게 알고있지? | Harvard CS50 Week 0 Scratch (0) 2021.10.27 컴퓨터 공학이란? | Harvard CS50 Week 0 Scratch (0) 2021.10.26