0과 1
0과 1밖에 이해하지 못하는 컴퓨터가 어떻게 1보다 큰 수를 이해하고 0보다 작은 수를 이해할까?
0과 1뿐인 데이터로 어떻게 5+7을 더한 12의 값을 출력할까?
위 질문에 대한 답변을 구조를 배우며 찾아가보자
비트(bit) : 0과 1을 표현하는 가장 작은 정보단위
* bit는 컴퓨터의 전구로 이해하면 쉽다. 0이면 꺼짐 1이면 켜짐처럼 아주아주 간단한 데이터를 처리할 수 있는 단위이다.
이것이 무엇을 의미할까? 2가지 정보를 처리할 수 있음을 의미한다.
그렇다면 2bit는 몇가지 정보를 처리할까? 정답은 3가지이다 00, 10, 01, 11 으로 총 4가지의 경우의 수를 만들 수 있기 때문이다.
그럼 3bit는 몇가지를 처리할까? 000 001 100 010 110 101 011 111 총 8개의 경우에 수를 처리할 수있다.
규칙이 보이지않나? 2의 제곱으로 경우의 수가 늘어나는 것을 확인 할 수 있다.
정리해보자
프로그램은 수많은 비트로 이루어져 있다.
다만 평소에 이것은 2010239비트야 라고 표현하지는 않음
더 큰 숫자범위를 만들어서 사용함 byte kilobyte megabyte gigabyte terabyte처럼 말이다.
1 byte: 8(bit) 1 kilobyte : 1000byte , megabyte : 1000kilobyte , gigabyte : 1000megabyte 로 표현이 가능하다.
이전 단위를 1024개씩 묶은 단위는 kiB, MiB, GiB 로 구분해서 사용합니다.
정보단위 (word)
cpu가 처리할 수 있는 정보 크기 단위를 의미합니다.
3가지 용어로 부르는데
half word(하프워드) : 워드의 절반크기
full word(풀 워드) : 워드 크기
double word(더블 워드) : 워드의 두배크기
0과 1로 숫자표현하는 방법
들어본적이 있을 것이다. 0과 1로 숫자표현 방법을 이진법(binary)이라고 부른다.
방법-
숫자가 1을 넘어가는 시점에 자리올림을 하면된다.
우리가 일상적으로 사용하는 진법은 숫자가 9를 넘어갈 때 자리올림하는 십진법이다.
말로하면 잘 안그려지니 그림으로 알아보자
이진수와 십진수를 나타내는 그림을 보며 이해하면 쉽습니다.
음수를 표현한 값
0과 1로 음수표현하기 - 2의 보수 법
가장표현하기 쉬운 방법은 1,1의 모든 0과 1을 뒤집고 1을 더한 값이다.
원래 정의는 어떤 수를 그보다 큰 2의 제곱에서 뺀 값입니다.
Q! flag - 컴퓨터는 어떻게 양수인지 음수인지 파악할까?
음수는 CPU내부에 있는 플레그 레지스터에 의해 음수로 파악된다. 즉 플레그를 통해 양수인지 음수인지 파악할 수 있다.
이진법으로는 숫자의 길이가 너무 길어집니다.
그래서 컴퓨터의 데이터를 표현할 때 십육진법도 많이 사용합니다.
십육진법의 표현법
십육진수의 표기 방법은 다음과 같습니다
십육진수는 직접 코드에 써넣는 경우도 많습니다
TIP
이진수와 십육진수의 변환과정은 아주아주 간단하다.
이진수에서 십육진수로 변환
십육진수의 수를 이진수 4개로 표현을 해보고 표현한 4개를 합치면 그것이 이진수가 됩니다.
십육진수에서 이진수로 변환
이진수 4개를 기준으로 16진수를 쉽게 알아낼 수 있습니다.
https://www.youtube.com/watch?v=peg8c6Gn-zc&list=PLYH7OjNUOWLUz15j4Q9M6INxK5J3-59GC&index=5