개발일지/Computer Science

2진 코드화한 10진수 시스템 및 표현법, 비트그룹

티에리앙리 2022. 1. 19. 14:51

2진 코드화한 10진수 시스템

2진수로 수를 표현하는 일반적인 방식과 다른 방법도 있다

그중에

2진 코드화한 10진수( BCD : binary-coded decimal )

-  4비트를 사용해 10진 숫자를 하나 표현한다. ( 즉, 10진수를 2진 코드화한 것이다) 

 

예를 들어 10진수 713 을 BCD 코드로 표현하면 0111 0001 0011 이 된다.

BCD 표 - 714가 아니라 713이 맞다

하지만 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

내용 출처

https://smoothiecoding.kr/%EB%B9%84%ED%8A%B8-%EB%B0%94%EC%9D%B4%ED%8A%B8-%EC%9B%8C%EB%93%9C/#%EC%9B%8C%EB%93%9CWord