차이점

이 페이지의 선택한 이전 버전과 현재 버전 사이의 차이점을 보여줍니다.

차이 보기로 연결

이진부호화십진수 [2011-08-31 09:45]
lifthrasiir 최소한의 내용만
이진부호화십진수 [2011-08-31 10:53] (현재)
lifthrasiir 좀 정리
줄 3: 줄 3:
 Binary-coded decimal (BCD). [[십진수]]를 [[비트]]열로 표현하기 위한 [[부호화]] 방법. 여러 자리의 십진수를 이진수로 변환한 뒤 그걸 그대로 저장하는 보통의 방법과는 달리, BCD에서는 각 자리마다 4비트씩 고정하여 저장하기 때문에 출력이 훨씬 간단한 대신 같은 자릿수를 표현하는데 더 많은 비트가 필요하다. Binary-coded decimal (BCD). [[십진수]]를 [[비트]]열로 표현하기 위한 [[부호화]] 방법. 여러 자리의 십진수를 이진수로 변환한 뒤 그걸 그대로 저장하는 보통의 방법과는 달리, BCD에서는 각 자리마다 4비트씩 고정하여 저장하기 때문에 출력이 훨씬 간단한 대신 같은 자릿수를 표현하는데 더 많은 비트가 필요하다.
  
-BCD에서 각 자리는 0부터 9까지 각각 ''0000''부터 ''1001''이 할되어 있으며, 남는 여섯 개의 비트열은 부호를 위해 쓴다. 흔히 쓰이는 부호 비트는 ''1100''(수), ''1101''(음수), ''1111''(양수, 부호가 붙을 수 없는 숫자일 경우)가 고, 통의 부호와는 달리 자릿수를 모두 쓰고 맨 뒤에 다.+가장 널리 쓰이는 BCD 8421 부호화에서는 0부터 9까지의 자리를 각각 ''0000''부터 ''1001''까지 해하는 이진수로 저장하고, 남는 여섯 개의 비트열을 부호 용으로 사용(양수 ''1100'', 음수 ''1101'', 부호 없음 ''1111'')한다. 이렇게 나온 4비트열을 실제로 저장하는 방법은 대략 몇 가지로 나뉘는데: 
 + 
 +  * 압축 없음: 하위 4비트에 각 자리를 저장하고 상위 4비트는 (보통 0으로 채워서) 무시한다. 이를테면 12345는 ''01 02 03 04 05''가 된다. 부호 비트는 사용하지 않는다(따라서 이 방법으로는 음를 저장할 수 없다)
 +  * 압축 BCD (packed BCD): 높은 자리부터 상위 4비트하위 4비트 순서대로 채우고, 맨 마지막 자리에 부호 비트를 넣는다. 자릿수가 짝수가 아닐 경우 맨 앞에 0 자리를 넣어서 채운다. 이를테면 -1234는 ''01 23 4D''가 된다. 
 +  * 존 십진수 (zoned decimal): 하위 4비트에 자리를 넣고상위 4비트에 부호 정보를 넣는다. 부호 정보는 맨 마지막 바이트에만 넣고 나머지 바이트는 ''1111''(''F'')로 채운다. 이를테면 +1234는 ''F1 F2 F3 C4''가 된다. 이 방법은 [[EBCDIC]] 환경에서 널리 쓰였데 맨 마지막 자리를 뺀 모든 자리를 그대로 EBCDIC 숫자로 읽을 수 있기 때문이었다. 
 + 
 +그 밖의 변종으로 BCD를 [[고정소숫점]] [[실수]]를 표현하는 데 쓰는 경우도 다. 이 경우 어디에 소숫점이 붙는지에 대한 정는 바이트열만으로는 알 수 없다. 
 + 
 +===== 다른 부호화 ===== 
 + 
 +BCD에서 각 4비트에 어떤 가중치를 할당하느냐에 따라 여러 다른 부호화가 가능하다. 다음은 대표적인 예제들이다. 
 + 
 +^  자리  ^  8421  ^  Excess-3  ^  2421  ^  84{.over}21{/}  ^  8421*((리 0에 10에 해당하는 값을 대응시켰다.))  ^ 
 +|  **0**  |  ''0000''  |  ''0011''  |  ''0000''  |  ''0000''  |  ''1010''  | 
 +|  **1**  |  ''0001''  |  ''0100''  |  ''0001''  |  ''0111''  |  ''0001''  | 
 +|  **2**  |  ''0010''  |  ''0101''  |  ''0010''  |  ''0110''  |  ''0010''  | 
 +|  **3**  |  ''0011''  |  ''0110''  |  ''0011''  |  ''0101''  |  ''0011''  | 
 +|  **4**  |  ''0100''  |  ''0111''  |  ''0100''  |  ''0100''  |  ''0100''  | 
 +|  **5**  |  ''0101''  |  ''1000''  |  ''1011''  |  ''1011''  |  ''0101''  | 
 +|  **6**  |  ''0110''  |  ''1001''  |  ''1100''  |  ''1010''  |  ''0110''  | 
 +|  **7**  |  ''0111''  |  ''1010''  |  ''1101''  |  ''1001''  |  ''0111''  | 
 +|  **8**  |  ''1000''  |  ''1011''  |  ''1110''  |  ''1000''  |  ''1000''  | 
 +|  **9**  |  ''1001''  |  ''1100''  |  ''1111''  |  ''1111''  |  ''1001''  | 
 + 
 +이 중 Excess-3, 2421, 84{.over}21{/}은 비트를 반전시키면 9의 보수를 쉽게 구할 수 있다는 장점이 있다. 또한 Excess-3의 경우 여기에 더해 각 자리의 정렬이 그대로 보존되고, 기존의 덧셈 회로를 그대로 쓸 수 있다는((덧셈 후 그 결과가 12를 넘으면 3을 더하고, 아니면 3을 뺀다.)) 장점이 있어서 한동안 널리 쓰였다. 
 + 
 +===== 같이 보기 ===== 
 + 
 +  * [[고밀도압축십진수]]
  
 {{tag>부호}} {{tag>부호}}

도쿠위키DokuWiki-custom(rev 9085d92e02)을 씁니다.
마지막 수정 2011-08-31 09:45 | 작성자 lifthrasiir