[컴퓨터 구조] 컴퓨터가 데이터를 이해하는 방법 1. 숫자
* 혼자공부하는컴퓨터구조+운영체제(강민철 / 한빛미디어) 책과 강의를 듣고 작성한 내용입니다 :)
컴퓨터는 0과 1로 표현된 정보만 이해할 수 있습니다.
그러면 컴퓨터는 어떻게 우리가 사용하는 숫자와 문자를 이해할 수 있을까요?
📗 숫자를 이해하는 방법
우리가 일상생활에서 사용하는 숫자는 십진수 입니다.
십진수 숫자를 컴퓨터가 이해할 수 있는 정보로 변환하기 위해 이진법을 사용합니다.
이진수는 끝에 아래첨자(2)를 붙이거나 이진수앞에 0b을 붙여 표기합니다. (이 포스팅에서는 0b을 붙여 표기하겠습니다)
십진수를 이진수로 변환 ex)
- 10 -> 8 + 2 -> 0b1010
- 7 -> 4 + 2 + 1 -> 0b111
따라서 컴퓨터에게 십진수7을 알려주려면 십진수7을 이진수로 표현한 0b111을 전달해야합니다.
그럼 컴퓨터에게 음수를 전달하고 싶으면 어떻게 해야할까요?
이진수의 음수로 변환하여 전달해야합니다.
일반적으로 이진수의 음수는 2의보수를 사용합니다.
2의 보수란?
- 사전적 의미로는 어떤수보다 큰 2의n승에서 어떤수를 뺀 값
- 조금 더 쉽게 표현하자면 모든 0과 1을 뒤집고, 거기에 1을 더한 값
2의보수 ex)
- 0b11 -> 0b01
- 0b1000 -> 0b1000
그럼 여기서 또 의문이 생깁니다.
- 0b11을 음수로 표현한 값 0b01과 양수 0b01을 어떻게 구분할까?
- 0b1000을 음수로 표현하면 똑같이 0b1000이 되는데 이것을 컴퓨터는 어떻게 구분할까?
따라서 2의보수만으로는 이진수의 음수를 표현하기는 부족합니다.
컴퓨터 내부에서 양수인지 음수인지 구분하기 위해 플래그를 사용합니다.
(컴퓨터 내부에서 어떤값을 다룰 때, 부가정보가 필요한 경우 플래그 사용)
이진법을 사용하여 컴퓨터가 숫자를 이해하게 되지만, 이진법은 숫자의 길이가 너무 길어진다는 단점이 있습니다.
이 단점을 보완하기 위해 이진수으로 변환하기 쉬운 십육진수을 사용합니다.
십육진수는 끝에 아래첨자(16)를 붙이거나 이진수앞에 0x을 붙여 표기합니다. (이 포스팅에서는 0x을 붙여 표기하겠습니다)
십육진수 1자리를 이진수으로 표현하기 위해서는 4자리 이진수 즉, 4bit가 필요합니다.
십육진법 이진수로 변환 ex)
- 0x1A2B -> (0x1 : 0b0001, 0xA -> 0b1010, 0x2 -> 0b0010, 0xB -> 0b1011) -> 0b0001101000101011