2진 코드화한 10진수 시스템 및 표현법, 비트그룹
2진 코드화한 10진수 시스템
2진수로 수를 표현하는 일반적인 방식과 다른 방법도 있다
그중에
2진 코드화한 10진수( BCD : binary-coded decimal )
- 4비트를 사용해 10진 숫자를 하나 표현한다. ( 즉, 10진수를 2진 코드화한 것이다)
예를 들어 10진수 713 을 BCD 코드로 표현하면 0111 0001 0011 이 된다.
하지만 BCD는 더 이상 주류가 아니다.
왜냐하면 BCD가 2진수를 효율적으로 활용하지 못하기 때문이다.
BCD는 일반적인 2진수에 비해 같은 수를 표현할 때 더 많은 비트를 사용한다.
ex)
169 = 10101001 ← 2진수 (8비트 사용)
169 = 0001 0110 1001 ← BCD (12비트 사용)
2진수를 다루는 쉬운 방법
8진 표현법
000 | 0 |
001 | 1 |
010 | 2 |
011 | 3 |
100 | 4 |
101 | 5 |
110 | 6 |
111 | 7 |
2진수 비트들을 3개씩 묶는다.
ex) 8진수 45612
100 | 101 | 110 | 001 | 010 |
4 | 5 | 6 | 1 | 2 |
16진 표현법
8진 표현법 보다 널리 쓰인다.
그 이유는 컴퓨터 내부가 8비트의 배수를 사용해 만들어지기 때문이다.
8의 배수는 4(16진수 한자리 비트수)로 균일하게 나눠 진다.
하지만 8의 배수는 3(8진수 한자리 비트수)으로 나눠지지 않는다.
16진수는 16개의 숫자가 필요하다. ( n진수는 n개의 숫자가 필요하다 )
16진수는 기존 0 ~ 9 까지의 수에 A B C D E F 를 추가한다.
A가 10 대응하고 ~ F가 15에 대응한다.
ex) 11010011111111000001 이라는 숫자가 있다.
이는 16진수 표현법으로 보면 아래와 같이 표현할 수 있다.
1101 | 0011 | 1111 | 1100 | 0001 |
D | 3 | F | C | 1 |
프로그래밍 언어의 진법 표기법
- 0b로 시작하는 숫자는 2진수이다. (자바7 이상, C++등 지원)
ex) int binary = 0b1010;
-> 10진수로 10이다.
- 0 으로 시작하는 숫자는 8진 숫자다.
ex) int = 017;
-> 10진수로 15이며, 2진수로 1111 이다.
- 1~9 사이의 숫자로 시작하는 숫자는 10진수다.
ex) int = 1234;
- 0x가 앞에 붙은(접두사) 숫자는 16진수다.
ex) int = 0x12f; -> 10진수 값은 303이다.
비트 그룹의 이름
이름 | 비트 개수 |
니블(nible) | 4 |
바이트(byte) | 8 |
하프 워드(half word) | 16 |
워드(word) | 32 |
더블 워드(double word) | 64 |
시간이 지남에 따라 세계적으로 8비트 덩어리가 기본 단위로 널리 쓰이기 시작했고 이를 바이트(byte)라고 부른다.
워드(word)는 각 컴퓨터가 설계상 자연스럽게 사용할 수 있는 비트 묶음의 크기를 가리키는 말로 쓰인다.
자연스럽게 쓸 수 있다는 말은 컴퓨터가 빠르게 처리할 수 있는 가장 큰 덩어리를 뜻한다.
워드는 컴퓨터 설계 시 기본 메모리 단위이다. (일반적으로 대부분의 컴퓨터가 그렇다)
CPU가 메모리에서 레지스터(CPU가 요청을 처리하는데 필요한 데이터를 일시적으로 저장하는 기억장치)로
데이터를 가져올 때의 데이터 처리 단위로 볼 수 있다.
워드라 하더라도 비트로 되어 있으니까 CPU가 비트를 담는 크기 정도로 볼 수 있다.
데이터를 가져오는 단위가 되니까 어떤 워드를 사용하느냐에 따라 속도 차이가 납니다.
물론 어플리케이션의 속도가 한 가지 요소만 가지고 결정되는 것은 아닙니다.
오늘날 컴퓨터와 운영체제의 구조는 생각보다 복잡하기 때문에 32비트가 64비트보다 더 빠르게 동작한다거나 하는 일도 있습니다.
큰 수를 가리키기 위한 표준용어
단위 | 숫자 |
kb | 2¹º |
mb | 2²º |
gb | 2³º |
tb | 2⁴º |
킬로(kilo)는 1000, 메가(mega)는 100만, 기가는 10억, 테라는 1조를 뜻하지만
컴퓨터에서는 이런 용어를 빌려와서 사용하되 의미를 약간 바꿔서
밑이 10이 아니라 2인 값을 표현하게 된다.
이미지 출처
https://soharang.tistory.com/434
http://agapang.blogspot.com/2016/06/2_20.html
내용 출처