Computer Science - 1
이 글은 양태환님의 저서인 “컴퓨터 사이언스 부트캠프 with 파이썬”을 보고 공부한 내용을 스스로 정리한 글 입니다
변수
메모리 미리 보기
- 변수(variable)나 참조(reference)의 개념을 명확히 이해하려면 메모리부터 이해해야 한다
- 컴퓨터는 1과 0으로 이루어진 데이터를 처리한다
- 1과 0을 표현할 수 있는 데이터 단위를 비트(bit)라고 부른다
- 1비트는 0 혹은 1이다
- 비트가 여덟 개 모이면 바이트(byte)
- 1바이트는 0과 1이 총 여덟 개로 구성되어 있다
- 기가바이트(gigabyte)는 1,073,741,824 (= 1,024 X 1,024 X 1,024) 바이트이다
스스로 학습
- 1Bit [비트] = 1과 0을 표현할 수 있는 데이터 단위
- 1Byte [바이트] = 8 비트
- 1KB [킬로바이트] = $2^{10}$ = 1,024 바이트
- 1MB [메가바이트] = $2^{20}$ = 1,048,576 바이트
- 1GB [기가바이트] = $2^{30}$ = 1,073,741,824 바이트
32비트와 64비트의 의미
- 데이터를 한 번에 몇 개 보낼 수 있는지를 나타내는 지표가 32비트와 64비트이다
- 한 번에 보낼 수 있는 데이터 개수가 32비트면 32비트 컴퓨터
- 한 번에 보낼 수 있는 데이터 개수가 64비트면 64비트 컴퓨터
- 32비트 컴퓨터는 메모리 주소를 32비트로 표현
- 64비트 컴퓨터는 메모리 주소를 64비트로 표현
예시를 통한 설명
- 8비트 컴퓨터라면 데이터가 지나가는 통로가 비트 단위로 여덟 개 있다고 생각하면 된다
- 고속도로에서 한 번에 달릴 수 있는 차가 2차선보다 4차선이 많은 것처럼 비트 수가 높을수록 한 번에 전송할 수 있는 데이터 양이 많아진다
메모리에 우편번호를 매긴다
- 우편번호는 다섯 자리수이다. 우편번호만큼 메모리의 주소 개념을 잘 설명하는 개념도 없다
- 우편번호는 우리나라 땅을 다섯 자릿수, 예를 들면 한 구역을 15235 형태로 나타낸다
- 아파트 한 채의 한 호(A동 701호)까지는 나타낼 수 없지만, 어느 동에 있는 어느 아파트인지는 구분할 수 있다
우편번호로 주소를 몇 개까지 나타낼 수 있을까?
- 우편번호는 다섯 자릿수 이므로 $10^5$개
- 즉, 00000 ~ 99999 구역을 총 100,000개까지 가리킬 수 있다
메모리를 우리나라라고 생각해 보자
- 메모리에 우편번호처럼 주소를 부여해보자
- 대신 컴퓨터는 0과 1밖에 모르므로 컴퓨터에 주소를 알려 주려면 주소도 2진수로 나타내야 한다
- 메모리 주소 한 개는 메모리에서 1바이트를 가리킨다
- 우편번호 한 개가 일정 구역 한 곳을 가리키듯이
- 예를 들어 2진수 여덟 개로 메모리 주소를 표현한 8비트 컴퓨터
- 0000 0001 = 1byte
- 0000 0010 = 1byte
- 0000 0011 = 1byte
- 0000 0100 = 1byte
- 32비트 컴퓨터라면 주소 하나를 나타냐는 데 2진수 서른두 자릿수를 사용한다
- 그러므로 32비트에서 나타낼 수 있는 주소 개수는 $2^{32}$ (= 4,294,967,296) 바이트를 표현 할 수 있다
- 4,294,967,296 바이트는 4 X 1,024 X 1,024 X 1,024바이트로 풀어 쓸 수 있다
- 4 X 1,024 X 1,024 X 1,024바이트는 4GB
- 4,294,967,296 바이트는 4 X 1,024 X 1,024 X 1,024바이트로 풀어 쓸 수 있다
- 그러므로 32비트에서 나타낼 수 있는 주소 개수는 $2^{32}$ (= 4,294,967,296) 바이트를 표현 할 수 있다
- 즉, 32비트로는 총 4GB 메모리를 가리킬 수 있다
- 그러므로 32비트 컴퓨터에서는 4GB보다 큰 메모리를 더 설치해도 무용지물이다
- 32비트 컴퓨터에 4GB 메모리에 추가로 4GB 메모리를 더 설치해도 메모리 주소를 배정받지 못해 접근조차 할 수 없다
- 64비트 컴퓨터는 이론으로만 보면 $2^{64}$ (=18,446,744,073,709,551,616) 바이트를 가리킬 수 있으므로 크기가 훨씬 큰 램을 설치해도 모두 사용할 수 잇다
변수의 의미
- 변수(variable)란 데이터를 저장할 수 있는 메모리 공간을 의미한다
-
변수가 단순한 이름이 아니라 메모리 공간 자체를 의미한다
-
- 변수는 숫자와 문자뿐만 아니라 객체, 심지어 함수까지도 담을 수 있다
- 변수에 담긴 값이나 가리키는 대상은 언제라도 변경될 수 있다
-
변경될 수 있으므로 변수이다
-
다른 언어에서 말하는 변수와 파이썬에서 말하는 변수는 약간 차이가 난다
- C 언어에서 말하는 변수
- int num = 5;
- num이라는 ‘변수’에 5라는 ‘값’이 담겨 있다
- int num = 5;
파이썬에서의 변수 :
이름과 값 객체
-
파이썬에서 쓰는 변수는 이름과 값 객체로 나눠진다
- 파이썬에서 변수라고 부르는 것은 사 ‘이름’이다
- num = 5
-
num이라는 ‘이름’은 5라는 ‘값 객체’를 가리키게 된다
-
num은 5라는 값을 담고 있는 메모리 공간을 의미하지 않는다
- 값 객체는 다른 메모리 공간에 있다
num = 5
type(num)
int
-
이 코드는 num이라는 변수의 타입이 상수가 아니라 int라는 클래스의 인스턴스(객체)라는 것을 알려준다
- Computer-Science-1 에서는 메모리의 대략적인 개념과 프로그래밍에서 중요한 요소 중 하나인 변수에 대해 학습
- Computer-Science-1 에서는 일반적인 변수와는 다른 파이썬에서의 변수에 대해 학습
학습 후 나의 생각
- 변수에 대해 어렵게 생각하고 헷갈리는 개념이 있었는데 학습후 어떤 개념인지 잘 파악 되었다
- 컴퓨터에서 사용되는 메모리의 종류와 개념에 대해 알게되었다
- 32비트 컴퓨터와 64비트 컴퓨터로 예시를 들어 학습한 32비트와 64비트의 의미가 무엇인지 알게되었다
- 파이썬에서의 변수의 의미와 개념이 다른 언어와 다르다는 것을 알게되었고 파이썬에서는 어떤 개념으로 이루어졌는지 알게 되었다