[혼자 공부하는 컴퓨터 구조 + 운영체제] 2강 데이터
정보 단위
컴퓨터가 이해할 수 있는 가장 작은 단위의 정보는 ‘비트’이며, 비트가 8개로 묶은 것을 ‘바이트’라고 한다.
CPU가 한 번에 처리할 수 있는 데이터 크기는’워드’라고 한다. 이 워드는 CPU의 종류에 따라 16, 32, 64비트로 다양한다
이진수와 음수 표현
우리가 사용하는 숫자는 0부터 9까지는 하나의 자릿수지만, 9보다 1이 더 커지면, 10이되며 자릿수가 커진다. 이것은 10진수를 사용하기 때문이다.
컴퓨터는 2진수를 사용한다. 따라서 0부터 1까지는 하나의 자릿수지만, 1보다 1이 더 커지면, 10이되며 자릿수가 저 커진다.
10진수로 음수를 표현할 땐 앞에 음수 부호를 붙이는데, 2진수는 2의 보수를 사용한다. 보수는 0을 1로, 1을 0으로 바꾼 것이다. 이렇게 바꾸기만 하면 1의 보수가 되며, 여기에서 1을 더해주면 2의 보수가 된다. 하지만 이렇게 2의보수를 취한 값이 양수인지, 음수인지는 컴퓨터가 구분할 수 없다. 이는 플래그(flag)를 통해 알 수 있다. 플래그는 부가 정보로, 다양한 값이 들어가있다. 플래그는 비트 연산을 통해 다양한 표현을 할 수 있는데, 여기에 양수인지, 음수인지 구분할 수 있는 값이 들어간다.
Q : 값이 양수인지 음수인지를 플래그를 통해서 알 수 있다면, 실제로 데이터를 저장할때 플래그 값이 추가로 저장되는가?
A : 그렇지 않다. 양수인지 음수인지는 최상위 비트(MSB; Most Significant Bit)로 알 수 있다. 1이면 음수, 0이면 양수이다.
Q : 그렇다면 굳이 플래그로 양수인지 음수인지를 저장할 필요가 있는가?
A : 플래그에 미리 양수인지 음수인지 여부가 저장되어있다면, CPU가 별다른 로직 없이 플래그만으로 양수 음수 여부를 체크할 수 있다.
문자 집합과 인코딩
컴퓨터가 인식하고 표현할 수 있는 문자의 모음을 문자 집합(char set)이라고 한다.
문자 집합에 속한 문자를 컴퓨터가 바로 이해할 수는 없다. 문자를 비트로 변환하는 과정이 필요한데, 이를 문자 인코딩(character encoding)이라고 한다. 반대로 비트를 사람이 이해할 수 있는 문자로 변환하는 과정을 문자 디코딩(character decoding)이라고 한다.
문자 집합은 아스키 코드, EUC-KR, 유니코드, UTF-8 등 다양하게 존재한다.