📱이진법, 십육진법📱
컴퓨터는 기본적으로 0과 1, 즉 이진(binary) 형태의 데이터를 처리한다.
이를 이해하기 위해서는 컴퓨터의 기본 구성 요소인 트랜지스터를 알아야 한다.
트랜지스터는 컴퓨터의 전자 회로에서 중요한 역할을 하는데, 전기 신호를 제어해서 컴퓨터의 작업을 수행한다.
트랜지스터는 스위치로 생각할 수도 있는데, 전기가 흐르면 1, 전기가 흐르지 않으면 0으로 간단하게 표현할 수 있다.
정보 단위
비트(bit)
-0과 1을 표현하는 가장 작은 정보 단위
1비트는 꺼짐, 켜짐 즉 2가지를 표현할 수 있다. n비트는? 2^n 즉 2의 n승 가지의 정보 표현이 가능하다.
프로그램은 수많은 비트로 이루어져 있다. 하지만 프로그램의 크기를 전부 비트로 표현하는 것은 한계가 있기 때문에 더 큰 단위가 존재한다.
1바이트(1byte) = 8비트(8bit)
1킬로바이트(1kB) = 1000바이트
1메가바이트(1MB) = 1000킬로바이트
1기가바이트(1GB) = 1000메가바이트
1테라바이트(1TB) = 1000기가바이트
* 1024개씩 묶은 단위는 KiB, MiB, GiB 등으로 따로 존재함.
워드(word)
- CPU가 한 번에 처리할 수 있는 정보의 크기 단위
하프워드(워드의 절반), 풀 워드(워드의 크기), 더블 워드(워드의 두 배)
이진법(binary)
0과 1로 수를 표현하는 방법
숫자가 1을 넘어가는 시점에 자리올림.
cf. 일상에서 흔히 쓰는 숫자가 9를 넘어갈 때 자리올림하는 십진법(decimal)
1000은 십진수의 천일까 아니면 2진수일까? 이를 구분하기 위해서 표기법이 존재한다.
이진수8은 1000(2) 혹은 0b1000로 나타낼 수 있다.
0과 1로 음수 표현하기
-2의 보수법. 어떤 수를 그보다 큰 2^n에서 뺀 값.
ex. 11(2)를 음수로 나타내려면? 11(2)보다 큰 2의 n승은 100(2)
즉 100(2)에서 11(2)를 빼면 (4 - 3) = 01(2)가 된다.
쉽게 구하는 법 -> 모든 0과 1을 뒤집고, 1을 더해준다.
근데 이러면 음수인지 바로 모르지 않나? 01(2)가 1일 수도 있으니까
겉으로는 동일하지만, 플래그(flag)라는 개념이 있음
CPU의 레지스터에, 플래그 레지스터라는 친구가 있는데
모든 숫자가 플래그 값을 가지고 있기 때문에, 플래그 레지스터가 양수/음수를 구분하는 것
16진법(hexadecimal)
2진법만 가지고 숫자를 표현하기에는 길이가 너무 길어지는 문제가 있다.
그래서 컴퓨터의 데이터를 표현할 때 16진법도 많이 사용한다. (ex. 메모리 주소값)
16진법은 수가 15를 넘어가는 시점에 자리올림
ex 10진수 15는 16진수 F, 10진수 16은 15를 넘어갔기 때문에 자리올림을 해줘서 10(16)이 되는 것
10진법에서와 같은 이유로, 어떤 진수인지 표기하기 위해서
10(16) 혹은 0x(10)와 같이 표현할 수 있다.
십육진수 -> 이진수 변환
십육진수는 2^4이다. 즉 십육진수의 각 자리수가 4비트인것.(2진수 네개로 표현)
1A2B(16)을 이진수로 변환하면 하나씩 떼어서 1, A, 2, B로 보고
1을 4비트인 2진수로 표현하면 0001(2)
A는 1010(2) 2는 0010(2) B는 1011(2)
그리고 이들을 합쳐보면 0001101000101011(2)가 된다.
이진수 -> 십육진수 변환
이진수 4개가 십육진수 1개
11010101(2)인 경우 4개씩 쪼개서 1101, 0101
D, 5 -> D5(16)이 되는 것
학습 출처: https://www.youtube.com/watch?v=bls_GjX-4U8&list=PLVsNizTWUw7FCS83JhC1vflK8OcLRG0Hl
'Computer Science > 컴퓨터 구조' 카테고리의 다른 글
5. ALU와 제어장치 (0) | 2023.08.10 |
---|---|
4. 명령어의 구조 (0) | 2023.07.16 |
3. 소스코드/명령어 (0) | 2023.07.11 |
2. 0과 1로 문자 표현 (0) | 2023.07.06 |
0. 컴퓨터 구조 개론 (0) | 2023.07.03 |