컴퓨터가 이해하는 2가지 정보 중(데이터와 명령어) 데이터에 관한 학습이다.
컴퓨터는 기본적으로 0과 1밖에는 이해하지 못한다.
전기신호가 쎄다 or 약하다 즉, 0과 1로 컴퓨터는 정보를 받아들인다.
근데 어떻게 3과 4 그리고 100 , 10000 …등 큰 수들을 이해할 수 있을까?
정보단위
컴퓨터가 0과 1을 표현하는 가장 작은 정보 단위는 '비트'이다.
↓↓2비트로 표현할 수 있는 정보↓↓
○ ○
○ ●
● ○
● ●
n비트로는 2n가지의 정보 표현이 가능하고 프로그램은 수많은 비트로 이루어져 있다.
비트보다 더 큰 단위는 바이트 → 킬로바이트 → 메가바이트 → 기가바이트 → 테라바이트 …
워드(word)
컴퓨터 구조를 학습하는데 있어서 중요하게 다루어 지는 단위가 있는데
바로 '워드'이다.
CPU가 한 번에 처리할 수 있는 정보의 크기 단위인데
만약 CPU가 한번에 32비트를 처리할 수 있다면 1워드는 32비트인 셈이다.
64비트를 한번에 처리할 수 있다면 ?? 그 CPU는 1워드 크기가 64인 것이다.
이외에 파생된 단위도 있는데 알아두자
- 하프 워드 (half word) : 워드의 절반 크기
- 풀 워드 (full word) : 워드 크기
- 더블 워드 (double word) : 워드의 두 배 크기
0과 1로 숫자 표현 이진법(binary)
우리는 일상에서 십진법(decimal)을 사용한다.
숫자가 9를 넘어갈 때 자리를 올려 10을 표현하면서
모든 숫자를 표현 할 수 있듯이 이진법도 숫자가 1을 넘어가는 시점에
자리를 올리면서 0과 1만으로 모든 숫자를 표현할 수 있다.
이진법으로 숫자를 나타내는 것을 '이진수' 라고 한다.
십진수 이진수
1 1
2 10
3 11
4 100
5 101
6 110
7 111
8 1000
이진수로 음수를 표현
0과 1로 컴퓨터에 음수를 표현하는 가장 대표적인 방법은
'2의 보수법'이 있다.
2의 보수는 어떤 수를 그보다 큰 2n에서 뺀 값이다.
정의된 설명과 계산법을 보면 이해하기 어렵다.
하지만... 간단한 방법이 있는데
바로!!
모든 0과 1을 뒤집고 1을 더한 값이다.
하지만 여기서 궁금증이 생긴다.
-1011(₂) 를 표현하기 위한 0101(₂)과
십진수 5를 표현하기 위한 0101(₂)은 똑같이 생겼는데
구분을 어떻게 하지?
이때 CPU의 *플래그 레지스터(flag register)에 대해 알아야 한다.자세한 내용은 일단 여기에서는 다루기가 어렵다.2의 보수법에 대해서 정말 잘 알려준 블로그가 있어서 소개한다.
"Stranger's lab"
https://st-lab.tistory.com/189
2의 보수법에 대해 정말 자세히 설명해주셨다.
그 뿐만 아니라 배울 것이 많으니 가서 많이 배웁시다..
*플래그(flag)
CPU 내부에는 어떤 특별한 레지스터가 있다.
바로 '플래그 레지스터' 이다.
나중에 CPU에서 자세히 배우겠지만
간단히 설명하자면 모든 숫자가 플래그 값을 들고다닌다.
따라서 CPU 내부에 플래그 레지스터가 레지스터에 표시되는 값을 보고
이 숫자가 양수인지 음수인지 판단을 한다.
십육진법
이진법으로는 숫자의 길이가 너무 길어질 수 있다. ex ) 십진수 32 == 이진수 100000
그래서 컴퓨터의 데이터를 표현할 때 십육진법도 많이 사용된다.
간혹 코드를 보다보면
if ( offset & 0x00ffffff) 등 이런 0x 를 많이 볼 수 있는데
이것이 십육진법의 대표적인 코드 표기 방법이다.
참고로..
십육진수을 쓰는 이유가 이진수로 길어진 숫자를 간소화하는 목적도 있지만
이진수와 서로 변환하기 간편하기 때문에 쓴다고도 한다.
'컴퓨터공학(CS) 배우기 > 혼공 컴퓨터 구조 + 운영체제' 카테고리의 다른 글
[CS] ALU와 제어장치 (0) | 2023.03.31 |
---|---|
[CS] 명령어의 구조 (1) | 2023.03.27 |
[CS] 소스코드와 명령어 (0) | 2023.03.26 |
[CS] 컴퓨터 구조의 큰그림 (0) | 2023.03.21 |
[CS] 컴퓨터 구조를 왜 배워야 할까? (0) | 2023.03.21 |