맨위로가기

3 초과 부호

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

3 초과 코드는 각 십진수 자릿수에 3을 더한 후 4비트 이진수로 표현하는 방식이다. 이 코드는 가중치가 없는 코드이며, 자기 보수 성질을 가져 9의 보수를 쉽게 얻을 수 있어 뺄셈 연산에 용이하다. 3 초과 코드는 메모리나 전송 라인의 오류 감지에 활용될 수 있으며, 데이터 전송을 위해 3-of-6 코드 또는 4-of-8 코드로 확장될 수 있다.

더 읽어볼만한 페이지

  • 컴퓨터 산술 - IEEE 754
    IEEE 754는 부동소수점 숫자를 표현하고 처리하기 위한 국제 표준으로, 다양한 형식과 연산, 반올림 규칙, 예외 처리 등을 정의한다.
  • 컴퓨터 산술 - 1의 보수
    1의 보수는 이진수에서 양수는 일반적인 이진수로, 음수는 양수의 각 비트를 반전시켜 표현하며, 덧셈 시 자리올림수가 발생하면 결과값에 더해야 하고, 0을 중복 표현하는 단점으로 현대에는 2의 보수가 주로 사용된다.
3 초과 부호
명칭
이름Stibitz 코드
다른 이름3-초과 코드 (Excess-3 code)
특성
자릿수4
트랙4
가중치8 4
가중치 범위1..3
연속성아니오
순환성아니오
최소 거리1
최대 거리4
중복성0.7
어휘 편찬1
보수9

2. 표현

3 초과 코드는 각 십진수 자릿수에 3을 더한 후, 그 결과를 4비트 이진수로 표현하는 방식이다. 3 초과 코드는 가중치가 없는 코드(non-weighted code)로, 각 비트가 특정 값을 나타내지 않는다. 가장 작은 이진수는 가장 작은 값을, 가장 큰 이진수는 가장 큰 값을 나타낸다.

3 초과 코드와 BCD 8-4-2-1 코드, 이진수 간의 관계
십진수3 초과BCD 8-4-2-1이진수
0001100000000
1010000010001
2010100100010
3011000110011
4011101000100
5100001010101
6100101100110
7101001110111
8101110001000
9110010011001



예를 들어 127을 3 초과 코드로 나타내려면, 각 자릿수를 변환하여 0100, 0101, 1010을 얻는다.

3. 연산

3 초과 코드의 산술 연산은 일반적인 BCD 또는 이진 연산과는 다른 알고리즘을 사용한다. 두 개의 3 초과 숫자를 더하면, 결과는 6 초과 코드가 된다. 예를 들어, 1 (3 초과 코드로 0100)과 2 (3 초과 코드로 0101)을 더하면, 결과는 3 (3 초과 코드로 0110)이 아니라 6 (3 초과 코드로 1001)이 된다. 덧셈 결과에서 3을 빼거나 (결과 자릿수가 10보다 작을 때), 13을 빼서 (자리 올림이 발생했을 때) 올바른 3 초과 코드 값을 얻을 수 있다.[1]

4. 장점

3 초과 코드의 가장 큰 장점은 자기 보수 성질이다. 즉, 모든 비트를 반전시켜 9의 보수를 쉽게 얻을 수 있다는 점이다. 이는 뺄셈 연산을 간단하게 만들어 준다. 두 3 초과 숫자의 합이 9보다 크면, 4비트 가산기의 캐리 비트가 1이 된다. 또한 0000과 1111 코드는 사용되지 않으므로, 메모리나 전송 라인의 오류를 감지하는 데 활용될 수 있다.

5. 확장

3 초과 코드는 데이터 전송을 위해 6비트 또는 8비트 코드로 확장될 수 있다.


  • 3-of-6 코드 확장: 6비트 중 3비트가 1인 코드이다.
  • 4-of-8 코드 확장: 8비트 중 4비트가 1인 코드이며, 해밍 거리를 증가시켜 오류 검출 능력을 향상시킬 수 있다. IBM 트랜시버 코드의 대안으로 사용되기도 한다.

6. BCD 8-4-2-1에서 3 초과 코드로 변환 예시

vhdl

entity bcd8421xs3 is

port (

a : in std_logic;

b : in std_logic;

c : in std_logic;

d : in std_logic;

an : buffer std_logic;

bn : buffer std_logic;

cn : buffer std_logic;

dn : buffer std_logic;

w : out std_logic;

x : out std_logic;

y : out std_logic;

z : out std_logic

);

end entity bcd8421xs3;

architecture dataflow of bcd8421xs3 is

begin

an <= not a;

bn <= not b;

cn <= not c;

dn <= not d;

w <= (an and b and d ) or (a and bn and cn)

or (an and b and c and dn);

x <= (an and bn and d ) or (an and bn and c and dn)

or (an and b and cn and dn) or (a and bn and cn and d);

y <= (an and cn and dn) or (an and c and d )

or (a and bn and cn and dn);

z <= (an and dn) or (a and bn and cn and dn);

end architecture dataflow; -- of bcd8421xs3

참조

[1] 서적 Computer Architecture and Organization McGraw-Hill International Book Company 1978
[2] 문서 이런 코드를 자기 보수 코드라고 한다.



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com