바이트 : 여덞 개의 비트를 묶은 단위 (1byte == 8bit, 2^8(256)개의 정보)
1킬로바이트(1KB) : 1 바이트 1,000개를 묶은 단위
1메가바이트(1MB) : 1킬로바이트 1,000개를 묶은 단위
1기가바이트(1GB) : 1메가바이트 1,000개를 묶은 단위
1테라바이트(1TB) : 1기가바이트 1,000개를 묶은 단위
워드(word) : CPU가 한 번에 처리할 수 있는 데이터 크기를 의미
- 만약 CPU가 한 번에 16비트를 처리할 수 있다면 1워드는 16비트
- 한 번에 32비트를 처리할 수 있다면 1워드는 32비트가 된다
- 워드의 절반 크기: 하프 워드
- 1배 크기 : 풀 워드
- 2배 크기 : 더블 워드
이진수의 음수 표현
- 가장 널리 사용되는 방법은 2의 보수를 구해 이 값을 음수로 간주하는 방법
- 2의 보수의 사전적 의미는 '어떤 수를 그보다 큰 2^n에서 뺀 값'을 의미
- 모든 0과 1을 뒤집고, 거기에 1을 더한 값
- 11(2)의 모든 0과 1을 뒤집으면 00(2)이고, 거기에 1을 더한 값은 01(2)이다
- 1011(2)에서 모든 0과 1을 뒤집으면 0100(2)이고 여기에 1을 더한 값은 0101(2)
- 즉 0101(2)은 1011(2)의 음수
- 어떤 수의 2의 보수를 두 번 구해 보면 자기 자신이 된다
- 마찬가지로 1011(2)의 2의 보수를 두 번 구해 보면 자기 자신은 1011(2)이 된다
- 실제로 이진수만 봐서는 음수인지 양수인지 구분하기 어렵다
- 그래서 컴퓨터 내부에서 어떤 수를 다룰 때는 이 수가 양수인지 음수인지를 구분하기 위해 플래그를 사용한다
- 플래그는 쉽게 말해 부가 정보이다
16진수를 2진수로 변환하기
- 16진수를 이루는 숫자 하나를 2진수로 표현하려면 4비트가 필요하다 (2^4 = 16)
- 16진수를 2진수로 변환하는 간편한 방법 중 하나는 16진수 한 글자를 4비트의 이진수로 간주하는 것
- 16진수를 이루고 있는 각 글자를 따로따로 2진수로 변환하고, 그것들을 그대로 이어 붙이면 16진수가 2진수로 변환된다
- 1A2B 라는 16진수는 각 숫자 1(16), A(16), 2(16), B(16)를 이진수로 표현하면
- 0001(2), 1010(2), 0010(2), 1011(2) 이다
- 이 숫자를 그대로 이어 붙인 값, 즉 0001_1010_0010_1011(2)이 1A2B(16)를 이진수로 표현한 값
2진수를 16진수로 변환하기
- 2진수를 16진수로 변환할 때는 2진수 숫자를 네 개씩 끊고, 꾾어 준 네 개의 숫자를 하나의 16진수로 변환한 뒤 그대로 이어 붙이면 된다
- 1101_0101(2)이라는 이진수를 네 개씩 끊으면 1101(2), 0101(2)이고 이는 각각 D(16), 5(16) 이므로 이를 그대로 이어 붙인 D5(16)가 1101_0101(2)를 16진수로 변환한 수이다
- 2진수를 10진수로 변환할 때는 이렇게 간단하지 않기에 2진수를 16진수로 묶어 표현하는 것