그레이코드

Gray code
루칼 코드[1][2]
5 4 3 2 1
그레이코드
4 3 2 1
0 0 0 0 0 0
1 0 0 0 1 1
2 0 0 1 1 0
3 0 0 1 0 1
4 0 1 1 0 0
5 0 1 1 1 1
6 0 1 0 1 0
7 0 1 0 0 1
8 1 1 0 0 0
9 1 1 0 1 1
10 1 1 1 1 0
11 1 1 1 0 1
12 1 0 1 0 0
13 1 0 1 1 1
14 1 0 0 1 0
15 1 0 0 0 1

반사 이진 코드(RBC)프랭크 그레이(Frank Gray)의 이름을 따서 반사 이진 코드(RB) 또는 그레이 코드라고도 하며, 두 개의 연속적인 값이 오직 하나의 비트(이진 숫자)에서만 서로 다른 이진 숫자 시스템의 순서입니다.

예를 들어, 십진수 값 "1"을 이진법으로 표현하면 일반적으로 "001"이고 "2"는 "010"입니다.회색 코드에서 이러한 값은 "001" 및 "011"로 표시됩니다.이렇게 하면 1에서 2로 값을 증가시키면 2비트가 아니라 1비트만 변경해야 합니다.

회색 코드는 전기 기계식 스위치의 거짓 출력을 방지하고 디지털 지상파 텔레비전일부 케이블 TV 시스템과 같은 디지털 통신에서 오류 수정을 용이하게 하기 위해 널리 사용됩니다.이러한 장치에 그레이 코드를 사용하면 논리 연산을 단순화하고 [3]실제 오류를 줄이는 데 도움이 됩니다.

기능.

많은 장치가 스위치를 닫고 열어서 위치를 표시합니다.해당 장치가 자연 이진 코드를 사용하는 경우 위치 3과 4는 서로 옆에 있지만 이진 표현의 세 비트는 모두 다릅니다.

십진법 이진법
... ...
3 011
4 100
... ...

자연 이진 코드의 문제는 물리적 스위치가 이상적이지 않다는 것입니다. 물리적 스위치가 정확히 동기화되어 상태를 변경할 가능성은 매우 낮습니다.위에 표시된 두 상태 사이의 전환에서는 세 개의 스위치 모두 상태가 바뀝니다.모든 것이 바뀌는 짧은 시간 동안 스위치는 일부 가짜 위치를 읽습니다.키바운스가 없어도 전환은 011001101100처럼 보일 수 있습니다.스위치가 001 위치에 있는 것처럼 보일 때 관찰자는 그것이 "진짜" 위치 1인지 아니면 다른 두 위치 사이의 전환 상태인지 알 수 없습니다.출력이 조합 로직을 통해 순차적 시스템에 입력되는 경우, 순차적 시스템은 잘못된 값을 저장할 수 있습니다.

이 문제는 한 번에 하나의 스위치만 변경하면 해결할 수 있으므로 위치의 모호성이 전혀 없으므로 연속되는 정수 집합 각각에 코드를 할당하거나 원형 목록의 각 멤버에게 두 개의 코드 단어가 동일하지 않고 각각의 두 개의 인접 코드 단어가 정확히 하나의 기호만큼 차이가 나는 기호 단어를 할당합니다.이러한 코드는 인접 코드 간의 해밍 거리가 1인 [4][5][6][7][8]참조하여 단위 거리, 단일 거리, 단일 단계[9][10][7][8], 단위성 또는 동기성 [9]코드라고도 합니다.

발명.

그레이의 특허는 "반사 바이너리 코드"라는 용어를 소개합니다.

원칙적으로 주어진 단어 길이에 대해 두 개 이상의 이러한 코드가 있을 수 있지만, 그레이 코드라는 용어는 음이 아닌 정수에 대한 특정 이진 코드, 이진 반사 그레이 코드 또는 BRGC에 처음 적용되었습니다. 연구소 연구원 조지 R. Stibitz[11][12][13]1943년에 부여된 1941년 특허 출원에서 그러한 코드를 설명했습니다.프랭크 그레이(Frank Gray)는 1947년 자신의 특허 출원에서 이진 코드를 반영한 용어를 소개하면서 코드가 "아직 인식되지 않은 이름"[14]을 가지고 있다고 언급했습니다.그는 이 이름이 "일종의 반사 과정에 의해 기존의 이진 코드로부터 구축될 수 있다"는 사실에서 유래했습니다.

표준 부호화에서 최하위 비트는 2 on, 2 off (… 11001100 … )의 반복 패턴을 따르고 다음 자리는 4 on, 4 off의 패턴을 따르며 최하위 비트는 2 oni 2 off의i 패턴을 따릅니다.n비트 회색 코드의 경우, 가장 의미 있는 숫자는 2n-1 on 2 offn-1 뒤를 따르며, 두 번째 의미 있는 숫자와 동일하지만 시퀀스의 다른 지점에서 시작합니다.이에 대한 4비트 버전은 다음과 같습니다.

tesseract꼭짓점의 횡단으로 시각화
숫자 라인에 따른 회색 코드
십진법 이진법 회색 십진법
회색의
0 0000 0000 0
1 0001 0001 1
2 0010 0011 3
3 0011 0010 2
4 0100 0110 6
5 0101 0111 7
6 0110 0101 5
7 0111 0100 4
8 1000 1100 12
9 1001 1101 13
10 1010 1111 15
11 1011 1110 14
12 1100 1010 10
13 1101 1011 11
14 1110 1001 9
15 1111 1000 8

decimal 15의 경우 단 한 번의 스위치 변경만으로 decimal 0으로 롤오버됩니다.이를 [15]코드의 순환 속성 또는 인접 속성이라고 합니다.

현대 디지털 통신에서 회색 코드는 오류 수정에 중요한 역할을 합니다.예를 들어, QAM과 같은 디지털 변조 방식에서, 일반적으로 4비트 이상의 심볼로 데이터가 전송되는 경우, 신호의 콘스텔레이션 다이어그램은 인접한 콘스텔레이션 포인트들에 의해 전달되는 비트 패턴들이 단지 1비트 차이가 나도록 배열됩니다.이를 단일 비트 오류를 수정할 수 있는 순방향 오류 수정과 결합함으로써 수신기는 별자리 점이 인접한 점의 영역으로 이탈하게 하는 전송 오류를 수정할 수 있습니다.이로 인해 변속기 시스템은 소음에 덜 민감하게 됩니다.

스티비츠가 그레이 이전에 이 코드를[11][12][13] 설명했음에도 불구하고, 반사된 이진 코드는 나중에 그레이를 사용한 다른 사람들에 의해 그레이의 이름을 따서 붙여졌습니다.1953년에 출원된 두 개의 다른 특허 출원은 "회색 코드"를 "반영된 이진 코드"[16][17]의 대체 이름으로 사용합니다. 그 중 하나는 이름 [17]중 "최소 오류 코드"와 "순환 순열 코드"를 나열하기도 합니다.1954년 특허 출원은 "벨 전화 회색 코드"[18]를 언급하고 있습니다.다른 이름으로는 순환 이진 코드,[12] 순환 진행 코드,[19][12] 순환 순열 [20]이진 코드, 순환 순열 이진 코드,[21][22] 순환 순열 이진 코드 등이 있습니다.

그레이 코드는 19세기 전기 장치 발명가 엘리샤 [13][23][24][25]그레이에게 잘못 귀속되기도 합니다.

역사 및 실무적용

수학적 퍼즐

반사된 이진 코드는 공학자들에게 알려지기 전에 수학 퍼즐에 적용되었습니다.

이진 반사 회색 코드는 1872년 프랑스의 [26][13]루이 그로스에 의해 기술된 순차적인 기계적 퍼즐 메커니즘인 고전적인 중국 고리 퍼즐의 기본 계획을 나타냅니다.

1883년 [27][28][29][30]프랑스의 에두아르 루카스의 게임을 바탕으로 하노이의 탑 문제에 대한 해결책이 될 수 있습니다.이와 유사하게, 소위 부쿠레슈티의 타워와 클라겐푸르트의 타워라는 게임 구성은 3진5진 그레이 코드를 생성합니다.[31]

마틴 가드너(Martin Gardner)는 1972년 8월 사이언스 아메리칸(Scientific American)[32]지에 실린 수학 게임 칼럼에서 그레이 코드에 대한 대중적인 설명을 썼습니다.

이 코드는 또한 하이퍼큐브에서 해밀턴 사이클을 형성하며, 각 비트는 하나의 차원으로 보여집니다.

전신부호

프랑스 기술자 에밀 보도(Emile Baudot)가 인쇄 전신 시스템에 6단위(6비트) 코드를 사용하는 것에서 5단위 코드로 바뀌었을 때, 1875년 또는[33] 1876년에,[34][35] 그는 반사된 이진 코드를 사용하여 인쇄 바퀴에 알파벳 문자를 주문하고, 오직 세 개의 비트만을 사용하는 코드를 모음에 할당했습니다.모음과 자음이 알파벳 [36][37][38]순서대로 정렬되고 다른 기호들이 적절히 배치된 5비트 문자 코드는 반영된 [13]이진 코드로 인식되었습니다.이 코드는 보도[39] 코드(Baudot code)로 알려지게 되었고,[40][41][38] 약간의 변화를 거쳐 1932년에 결국 국제 전신 알파벳 1번(ITA1, CCITT-1)으로 채택되었습니다.

비슷한 시기인 [43][13]1874년,[42] 독일계 오스트리아인 오토 셰플러는 같은 목적으로 5비트 반사 이진 코드를 사용하여 비엔나에서 또 다른 인쇄 전신기를 시연했습니다.

아날로그-디지털 신호 변환

호환 가능한 컬러 텔레비전에 사용되게 된 시그널링 방법을 발명하여 유명해진 프랭크 그레이는 진공관 기반 장치를 사용하여 아날로그 신호를 반사된 이진 코드 그룹으로 변환하는 방법을 발명했습니다.1947년에 제출된 방법과 장치는 [14]1953년에 특허를 받았고 그레이라는 이름은 코드를 고수했습니다.그레이가 특허 받은 "PCM 튜브" 장치는 벨 연구소의 레이먼드 시어스(Raymond W. Sears)가 그레이와 윌리엄 M과 함께 만들었습니다.그레이가 반사된 바이너리 [44]코드 아이디어를 낸 구달입니다.

그레이의 특허 1면 일부, 플레이트(15)에 바이너리 코드가 반영된 PCM 튜브(10)를 나타낸 것

그레이는 아날로그 신호를 디지털로 변환할 때 오류를 최소화하기 위해 코드를 사용하는 데 가장 관심이 많았습니다. 그의 코드는 오늘날에도 이 목적으로 사용되고 있습니다.

포지션 인코더

3비트 이진 반사 회색 코드(BRGC)로 표시된 각도 측정 장치용 회전 인코더
13개의 트랙이 있는 그레이 코드 절대 회전 인코더.상단에는 하우징, 인터럽터 디스크, 광원이 있고 하단에는 감지 요소와 지지 부품이 있습니다.

그레이 코드는 가중 이진 인코딩에 우선하여 선형 및 회전 위치 인코더(절대 인코더 및 직교 인코더)에서 사용됩니다.이렇게 하면 위치의 이진 표현에서 여러 비트가 변경될 때 일부 비트가 다른 비트보다 먼저 변경되어 잘못된 읽기가 발생할 가능성이 없습니다.

예를 들어, 일부 회전식 인코더는 동심원 링(트랙)에 전기 전도성 회색 코드 패턴이 있는 디스크를 제공합니다.각 트랙에는 전도성 코드 패턴에 전기적 접촉을 제공하는 고정 금속 스프링 접점이 있습니다.이들 접점은 함께 회색 코드 형태의 출력 신호를 생성합니다.다른 인코더는 광학 또는 자기 센서를 기반으로 한 비접촉 메커니즘을 사용하여 그레이 코드 출력 신호를 생성합니다.

이동 인코더의 메커니즘이나 정밀도에 관계없이 코드가 읽히는 정확한 순간(샘플링)에 코드가 변경될 수 있기 때문에 특정 위치(코드 경계에서)에서 위치 측정 오류가 발생할 수 있습니다.이진 출력 코드는 모든 비트를 동시에 변경하는 것이 불가능하기 때문에 중대한 위치 측정 오류를 유발할 수 있습니다.위치가 샘플링되는 순간에 일부 비트가 변경되고 일부 비트가 변경되지 않은 경우 샘플링된 위치가 부정확하게 됩니다.절대 인코더의 경우 표시된 위치가 실제 위치에서 멀리 떨어져 있을 수 있으며 증분 인코더의 경우 위치 추적을 손상시킬 수 있습니다.

반대로 위치 인코더에서 사용하는 회색 코드는 연속적인 두 위치의 코드가 1비트씩만 다르므로 한 번에 한 비트만 변경할 수 있습니다.이 경우 최대 위치 오차가 작아져 실제 위치에 인접한 위치를 나타냅니다.

유전자 알고리즘

그레이 코드의 해밍 거리 특성으로 인해 유전자 [15]알고리즘에 사용되기도 합니다.코드의 돌연변이는 대부분 점진적인 변화를 허용하지만, 때로는 한 번의 비트 변경으로 인해 큰 도약을 초래하고 새로운 특성으로 이어질 수 있기 때문에 이 분야에서 매우 유용합니다.

부울 회로 최소화

회색 코드는 1953년부터[45][46][47] 카노 지도의 축을 라벨링하는 데에도 사용되고 1958년부터 [48][49][50][51]헨들러그래프에도 사용되며, 논리 회로 최소화를 위한 그래픽 방법입니다.

오류수정

현대 디지털 통신에서 회색 코드는 오류 수정에 중요한 역할을 합니다.예를 들어, QAM과 같은 디지털 변조 방식에서, 일반적으로 4비트 이상의 심볼로 데이터가 전송되는 경우, 신호의 콘스텔레이션 다이어그램은 인접한 콘스텔레이션 포인트들에 의해 전달되는 비트 패턴들이 단지 1비트 차이가 나도록 배열됩니다.이를 단일 비트 오류를 수정할 수 있는 순방향 오류 수정과 결합함으로써 수신기는 별자리 점이 인접한 점의 영역으로 이탈하게 하는 전송 오류를 수정할 수 있습니다.이로 인해 변속기 시스템은 소음에 덜 민감하게 됩니다.

클럭 도메인간 통신

디지털 로직 설계자는 서로 다른 클럭 주파수에서 동작하는 동기 로직 간에 멀티비트 카운트 정보를 전달하기 위해 그레이 코드를 광범위하게 사용합니다.이 논리는 서로 다른 "시계 영역"에서 작동하는 것으로 간주됩니다.이것은 다양한 클록킹 주파수로 작동하는 대형 칩 설계의 기본입니다.

최소의 노력으로 상태를 순환

시스템이 일부 컨트롤 집합의 모든 가능한 온오프 상태 조합을 순환해야 하고 컨트롤 변경 시 사소한 비용(예: 시간, 마모, 인적 작업)이 필요한 경우 그레이 코드는 각 상태 조합에 대해 설정 변경 횟수를 단 한 번의 변경으로 최소화합니다.예를 들면 수동으로 작동하는 밸브의 모든 설정 조합에 대해 배관 시스템을 테스트하는 것이 될 수 있습니다.

균형 잡힌 회색 코드[52]구성할 수 있으며, 매 비트 동일하게 자주 플립됩니다.비트 플립이 균등하게 분포되어 있으므로 다음과 같은 방법으로 최적입니다. 균형 잡힌 회색 코드는 각 자리에서 비트 플립의 최대 카운트를 최소화합니다.

그레이 코드 카운터 및 산술

조지 R. Stibitz[11][12][13]이미 1941년에 이진 펄스 카운팅 장치에 반사된 이진 코드를 사용했습니다.

그레이 코드 카운터의 일반적인 용도는 서로 다른 클럭 도메인에 존재하는 읽기 및 쓰기 포트가 있는 FIFO(first-in, first-out) 데이터 버퍼를 구축하는 것입니다.이러한 이중 포트 FIFO 내부의 입력 및 출력 카운터는 종종 그레이 코드를 사용하여 카운트가 클럭 도메인을 [53]넘을 때 잘못된 과도 상태가 캡처되는 것을 방지합니다.업데이트된 읽기 및 쓰기 포인터는 각 도메인에서 FIFO 빈 상태와 전체 상태를 추적할 수 있도록 변경될 때 클럭 도메인 간에 전달되어야 합니다.포인터의 각 비트는 이 클록 도메인 전송을 위해 비결정적으로 샘플링됩니다.따라서 각 비트에 대해 이전 값 또는 새 값이 전파됩니다.따라서 샘플링 포인트에서 멀티비트 포인터의 한 비트 이상이 변경되는 경우 "잘못된" 이진 값(새 값도 이전 값도 아님)이 전파될 수 있습니다.그레이 코드는 한 비트만 변경할 수 있다고 보장함으로써 가능한 샘플링 값이 새 또는 이전 멀티비트 값임을 보장합니다.일반적으로 회색 길이의 2중 전력 코드가 사용됩니다.

때때로 전자 시스템에서 디지털 버스는 한 번에 하나씩만 증가하거나 감소할 수 있는 양을 전달하는 데 사용됩니다. 예를 들어, 클록 도메인 사이 또는 디지털-아날로그 변환기로 전달되는 이벤트 카운터의 출력입니다.이러한 응용 프로그램에서 회색 코드의 장점은 코드의 비트를 나타내는 많은 와이어의 전파 지연 차이로 인해 수신된 값이 회색 코드 시퀀스를 벗어난 상태를 통과할 수 없다는 것입니다.이것은 기계적인 인코더의 구성에서 그레이 코드의 장점과 유사하지만, 이 경우 그레이 코드의 소스는 전자 카운터입니다.카운터 자체는 그레이 코드로 카운트해야 합니다. 또는 카운터가 바이너리로 실행되는 경우 카운터의 출력 값이 그레이 코드로 변환된 후 다시 잠가야 합니다. 왜냐하면 값이 바이너리에서 [nb 1]그레이 코드로 변환될 때,이진 데이터 비트가 이진-회색 변환 회로에 도달하는 시간의 차이는 코드가 순서를 완전히 벗어난 상태를 잠깐 통과할 수 있음을 의미할 수 있습니다.카운트 값을 그레이 코드로 변환하는 회로 뒤에 클록 레지스터를 추가하면 지연 시간의 클록 사이클이 발생할 수 있으므로 그레이 코드로 직접 카운트하는 [54]것이 유리할 수 있습니다.

그레이-코드 카운터에서 다음 카운트 값을 생성하려면 저장되는 현재 카운트 값을 증가시킬 몇 가지 조합 로직이 필요합니다.그레이 코드 번호를 증가시키는 한 가지 방법은 일반 이진 [55]코드로 변환하고 표준 이진 덧셈기로 하나를 추가한 다음 결과를 그레이 [56]코드로 다시 변환하는 것입니다.이진 리플 [57]카운터에서 마스터 슬레이브 플립 플롭의 첫 번째 래치에서 출력을 가져오는 것을 포함하여 회색 코드로 계산하는 다른 방법에 대해서는 Robert W. Doran의 보고서에서 설명합니다.

그레이 코드 주소 지정

프로그램 코드의 실행은 일반적으로 로컬 연속 주소의 명령 메모리 액세스 패턴을 야기하므로, 이진 주소 대신 그레이 코드 주소 지정을 사용하는 버스 인코딩은 주소 비트의 상태 변화의 수를 크게 줄일 수 있으므로 일부 저전력 [58][59]설계에서 CPU 전력 소모를 줄일 수 있습니다.

n비트 회색 코드 구성

반사 및 접두사 방법의 처음 몇 단계입니다.
4비트 그레이 코드 순열

n 비트에 대한 이진 반사 그레이 코드 리스트는 리스트를 반영함으로써 n - 1 비트에 대해 리스트로부터 재귀적으로 생성될 수 있습니다(즉, 엔트리를 역순으로 나열함), 원래 리스트의 엔트리를 이진 0으로, 반사 리스트의 엔트리를 이진 1로 앞에 붙입니다.원래 목록과 반대 [13]목록을 연결하는 겁니다예를 들어, n = 2 목록에서 n = 3 목록을 생성하는 경우:

2비트 목록: 00, 01, 11, 10
반영됨: 10, 11, 01, 00
이전 항목에 0으로 접두사 붙임: 000, 001, 011, 010,
새 항목 앞에 1을 붙입니다. 110, 111, 101, 100
연결됨: 000, 001, 011, 010, 110, 111, 101, 100

1비트 회색 코드는 G = (0,1)입니다.이는 길이가 0인 단일 항목으로 구성된 0비트 그레이 코드 G = (Ω)에서 위와 같이 재귀적으로 구축된 것으로 생각할 수 있습니다.G에서n G를 생성하는n+1 이 반복 과정은 표준 반사 코드의 다음 속성을 명확하게 합니다.

  • Gn 숫자 0, ..., 2n - 1의 순열입니다. (각 숫자는 목록에 정확히 한 번 나타납니다.)
  • G는 G의 전반부n+1 내장되어 있습니다n.
  • 따라서 이진수가 G에 나타나면 모든 긴 목록에서 동일한 위치에 나타난다는 점에서 코딩은 안정적입니다. 따라서 0부터 세는 숫자의 반사 그레이 코드 값 G(m) = m번째 반사 그레이 코드 값에 대해 이야기하는 것이 타당합니다.
  • Gn 각 항목은 이전 항목과 1비트씩만 다릅니다. (해밍 거리는 1입니다.)
  • G의 마지막n 항목은 첫 번째 항목과 한 비트만 다릅니다. (코드는 순환입니다.)

이러한 특성은 이진값을 해당 그레이 코드로 단순하고 빠르게 변환하는 방법을 제시합니다.입력 값의 다음으로 높은 비트가 1로 설정되면 각 비트가 반전됩니다.이것은 비트 시프트 및 배타적 연산이 가능한 경우 병렬로 수행할 수 있습니다. n번째 회색 코드는 n ⊕ ⌋ {\ n floor {\ 하여 얻습니다. 0비트 앞에 붙이면 코드 워드의 순서는 변경되지 않고 1비트 앞에 붙이면 코드 워드의 순서가 반대가 됩니다.코드워드의 i{\ i 비트가 반전되면 {\ 2 코드워드의 블록 순서가 반대가 됩니다.예를 들어, 비트 0이 3비트 코드워드 시퀀스에서 반전되면, 두 개의 인접 코드워드의 순서가 반대가 됩니다.

000,001,010,011,100,101,110,111 → 001,000,011,010,101,100,111,110 (비트 0 반전)

비트 1이 반전되면 코드워드 2개의 블록이 순서를 바꿉니다.

000,001,010,011,100,101,110,111 → 010,011,000,001,110,111,100,101 (비트 1을 반전)

비트 2가 반전되면 코드워드 4개의 블록이 순서를 반대로 바꿉니다.

000,001,010,011,100,101,110,111 → 100,101,110,111,000,001,010,011 (비트 2 반전)

+ = = 0 {\ wor {\ i 를 bi display 0 {\displaystyle b_{i+1} tt mathtt {의 순서를 반대로 하면 + 1 {\+1 의 코드워드 순서를 변경할 수 있습니다.ds + = {\} = {\입니다. 이제, 이것은 그레이 코드를 생성하는 반사 앤 반사 방법과 정확히 동일한 연산입니다.

역번역을 수행할 때도 비슷한 방법을 사용할 수 있지만, 각 비트의 계산은 다음 상위 비트의 계산값에 따라 달라지므로 병렬로 수행할 수 없습니다. {\ i번째 그레이 부호화 비트( 0{\를 최상위 비트)라고 하고 {\{를 i {\ i}번째 이진 비트 0 {\ b_를 최상위 비트)라고 하면, 역번역은 재귀적으로 주어질 수 있습니다: 0 = {\} -1 } 또는 그레이 코드를 이진수로 디코딩하는 것은 그레이 코드의 비트의 프리픽스 합으로 설명할 수 있으며, 프리픽스 합에서 각 개별 합 연산은 모듈로 2를 수행합니다.

이진 패턴 그레이 코드를 반복적으로 구성하려면 0단계에서 코드 = }={\로 시작합니다.그리고 > 0{\i > 에서 i{\i}의 이진 표현에서 최하위 1의 비트 위치를 찾고 이전 - 1 해당 위치에서 비트를 플립하여 다음 i{\를 가져옵니다.비트 위치 시작 0, 1, 0, 2, 0, 1, 0, 3, ...[nb 2]이러한 값을 계산하기 위한 효율적인 알고리즘은 첫 번째 집합 찾기를 참조하십시오.

회색 코드로 변환 및 변환

C의 다음 함수는 이진수와 그와 관련된 그레이 코드 사이를 변환합니다.그레이-투-바이너리 변환은 각 비트를 한 번에 하나씩 처리해야 하는 것처럼 보일 수 있지만, 더 [60][55][nb 1]빠른 알고리즘이 존재합니다.

타이프 디프 무기명의 인트 뭉치다;  // 이 함수는 부호가 없는 이진수를 반영된 이진수 그레이 코드로 변환합니다. 뭉치다 이진 토회색(뭉치다 숫자를) {     돌아가다 숫자를 ^ (숫자를 >> 1); // >> 연산자가 오른쪽으로 이동합니다.연산자 ^은 배타적이거나 입니다. }  // 이 함수는 반사된 2진수 그레이 코드 번호를 2진수로 변환합니다. 뭉치다 회색과 이진 연결(뭉치다 숫자를) {     뭉치다 가면을 쓰다 = 숫자를;     하는 동안에 (가면을 쓰다) {           // 각 그레이 코드 비트는 더 중요한 모든 비트와 함께 배타적으로 표시됩니다.         가면을 쓰다 >>= 1;         숫자를   ^= 가면을 쓰다;     }     돌아가다 숫자를; }  // SWAR(SIMD in register) 기법을 사용하여 32비트 이하의 그레이 코드에 보다 효율적인 버전. // 병렬 접두사 XOR 기능을 구현합니다.할당 문은 순서에 상관없이 사용할 수 있습니다. // // 이 기능은 단계를 추가하여 긴 회색 코드에 맞게 조정할 수 있습니다.  뭉치다 회색과 이진 연결32(뭉치다 숫자를) {     숫자를 ^= 숫자를 >> 16;     숫자를 ^= 숫자를 >>  8;     숫자를 ^= 숫자를 >>  4;     숫자를 ^= 숫자를 >>  2;     숫자를 ^= 숫자를 >>  1;     돌아가다 숫자를; } // 4비트 한 번에 변형은 이진수 (abcd)2를 (abcd)2 ^ (00ab)2로 변경한 다음 (abcd)2 ^ (00ab)2 ^ (0abc)2 ^ (000a)2로 변경합니다. 

최신 프로세서에서는 CLMUL 명령 집합을 활용하여 디코딩 단계에서 ALU 명령의 수를 줄일 수 있습니다.MASK가 0자리 한 자리로 끝나는 상수 이진 문자열인 경우, 회색 인코딩이 x인 MASK의 운반 없는 곱셈은 항상 x 또는 해당 비트 단위의 음수를 제공합니다.

회색 코드의 특수한 유형

실제로 "회색 코드"는 거의 항상 이진 반사 회색 코드(BRGC)를 나타냅니다.하지만, 수학자들은 다른 종류의 회색 코드를 발견했습니다.BRGC와 마찬가지로 각 단어는 단어 목록으로 구성되며, 각 단어는 한 자리의 숫자로만 다음 단어와 다릅니다(각 단어는 다음 단어와 해밍 거리가 1입니다).

n비트에 길이가 2보다 작은n 회색 코드

길이가 짝수이면 길이가 2보다 작은n n비트의 이진 그레이 코드를 구성할 수 있습니다.균형 잡힌 회색 코드로 시작하여 시작과 끝 또는 [61]중간에 있는 값 쌍을 제거하는 것이 한 가지 가능성입니다.OEIS 시퀀스 A290772는 0을 포함하고 최소 비트 수를 사용하는 길이 2n의 가능한 그레이 시퀀스 수를 제공합니다.

n자리 그레이 코드

터너리 넘버 → 터너리 그레이 코드

0 → 000
1 → 001
2 → 002
10 → 012
11 → 011
12 → 010
20 → 020
21 → 021
22 → 022
100 → 122
101 → 121
102 → 120
110 → 110
111 → 111
112 → 112
120 → 102
121 → 101
122 → 100
200 → 200
201 → 201
202 → 202
210 → 212
211 → 211
212 → 210
220 → 220
221 → 221

222 → 222

이진법으로 반사된 그레이 코드 이외에도 많은 특수한 형태의 그레이 코드가 있습니다.그러한 그레이 코드 유형 중 하나는 불리언 그레이 코드라고도 알려진 n-ary 그레이 코드입니다.이름에서 알 수 있듯이 이 유형의 그레이 코드는 인코딩에서 불리언이 아닌 값을 사용합니다.

예를 들어 3진(삼차) 회색 코드에서는 값 0,1,[31]2를 사용합니다.(n, k)-회색 코드는 [63]k자리의 n자리 회색 코드입니다.(3, 2)-회색 코드의 요소 순서는 00,01,02,12,11,10,20,21,22입니다.(n, k)-회색 코드는 BRGC처럼 재귀적으로 구성될 수도 있고, 반복적으로 구성될 수도 있습니다.(N, k)-회색 코드를 반복적으로 생성하는 알고리즘이 (C에서) 제시됩니다.

// 입력: 기본값, 숫자, 값 // 출력 : 그레이 // 값을 주어진 기본값과 숫자를 가진 회색 코드로 변환합니다. // 값의 시퀀스를 반복하면 시퀀스가 발생합니다. // 한 번에 한 자리만 바뀌는 회색 코드. 공허한 그레이에게(무기명의 기초, 무기명의 숫자들, 무기명의 가치, 무기명의 회색의[숫자들]) {   무기명의 염기 N[숫자들]; // 일반적인 기본 N 숫자를 저장합니다. 항목당 한 자리 수  무기명의 i;  // 루프 변수    // 일반적인 baseN 번호를 baseN array에 넣습니다.10루용, 109  // [9,0,1]로 저장됩니다.  위해서 (i = 0; i < 숫자들; i++) {   염기 N[i] = 가치 % 기초;   가치    = 가치 / 기초;  }    // 일반적인 baseN 번호를 회색 코드 등가로 변환합니다.참고:  // 루프는 가장 중요한 숫자에서 시작해서 아래로 내려갑니다.  무기명의 교대의 = 0;  하는 동안에 (i--) {   // 회색 숫자가 높은 값의 합만큼 아래로 이동합니다.   // 숫자들   회색의[i] = (염기 N[i] + 교대의) % 기초;   교대의 = 교대의 + 기초 - 회색의[i]; // 시프트가 양수가 되도록 밑면에서 풉니다.  } } // 예시들 // 입력 : 값 = 1899, 기본 = 10, 숫자 = 4 // 출력: baseN[] = [9,9,8,1], gray[] = [0,1,7,1] // 입력: 값 = 1900, 기본 = 10, 숫자 = 4 // 출력: baseN[] = [0,0,9,1], gray[] = [0,1,8,1] 

(n,k)-회색 코드에 대한 다른 회색 코드 알고리즘이 있습니다.위 알고리즘에 의해 생성된 (n,k)-회색 코드는 항상 순환적이며,[63] K가 홀수일 때 Guan에 의해 생성된 것과 같은 일부 알고리즘은 이 속성이 부족합니다.한편, 이 방법으로 한 번에 한 자리의 숫자만 변경되지만 래핑(n - 1에서 0으로 루프)하여 변경할 수 있습니다.Guan의 알고리즘에서 카운트는 교대로 상승과 하강을 반복하여 두 회색 코드 자리 사이의 숫자 차이가 항상 1이 되도록 합니다.

회색 코드는 고유하게 정의되지 않습니다. 이러한 코드의 열에 대한 순열도 회색 코드이기 때문입니다.위의 절차는 숫자의 유의도가 낮을수록 더 자주 바뀌는 코드를 생성하여 일반적인 카운팅 방법과 유사합니다.

증분이 최대 1자리 운반 작업으로 수행될 수 있기 때문에 각 증분에서 최대 2자리가 변경되는 변형 삼차수 시스템인 스큐 이진법도 참조하십시오.

균형 잡힌 회색 코드

이진법이 반영된 회색 코드는 많은 시나리오에서 유용하지만 "균일성"[52]이 부족하기 때문에 특정한 경우에는 최적이 코드가 최적이 아닙니다.균형 잡힌 회색 코드에서는 서로 다른 좌표 위치의 변경 횟수가 최대한 가깝습니다.이것을 더 정확하게 하기 위해, G를 전이수열 (δk ){\(\k을 가진 R진 완전 그레이 사이클이라 하자; G의 전이 수(스펙트럼)은 다음과 같이 정의된 정수의 집합입니다.

회색 코드는 전환 횟수가 모두 같으면 균일하거나 균일하게 균형을 이루는데, 이 경우 모든 k에 대해 λ k = {\}={\가 있습니다.분명히 =2 {\R= 2일 때, 그러한 코드는 n이 2의 거듭제곱일 경우에만 존재합니다.n이 2의 거듭제곱이 아닌 경우, 두 번의 전이 횟수 사이의 차이가 최대 균형이 잘 잡힌 이진 코드를 구성할 수 있습니다. 따라서 모든 전이 횟수가 2 ⌊ 2 ⌋ {\ 2 floor ⌉ {\ {2n⌈ \} n 2 n\ {\n}[52] 그레이 코드는 모든 전이 계수가 2의 인접 거듭제곱일 때 지수적으로 균형을 맞출 수 있으며, 그러한 코드는 2의 [65]거듭제곱일 때마다 존재합니다.

예를 들어 균형 잡힌 4비트 회색 코드는 16개의 전환이 있으며, 이는 4개의 위치(위치당 4개의 전환) 모두에 균등하게 분포될 수 있으므로 균일한 [52]균형을 유지할 수 있습니다.

0 1 1 1 1 1 1 0 0 0 0 0 0 1 1 0
0 0 1 1 1 1 0 0 1 1 1 1 0 0 0 0
0 0 0 0 1 1 1 1 1 0 0 1 1 1 0 0
0 0 0 1 1 0 0 0 0 0 1 1 1 1 1 1

반면 균형 잡힌 5비트 회색 코드는 총 32개의 전이를 가지며, 이는 위치 간에 균등하게 분포될 수 없습니다.이 예제에서는 4개의 위치에 각각 6개의 전환이 있고 1개의 위치에는 [52]8개의 전환이 있습니다.

1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0
0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 1 1 0 0 0
1 1 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0 0 0 1 1
1 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 1
1 1 1 1 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 1 1 1 1

이제 n개마다 n자리의 균형 그레이 코드를 생성할 수 있는 균형이 잘 잡힌 이진 그레이 코드의 구성과[66][67] 구현을 보여드리겠습니다.주요 원리는 균형 속성이 유지되는 방식으로 n자리 그레이 코드 G가 주어진 (n + 2)자리 그레이 G {\ G 유도적으로 구성하는 것입니다.이를 위해 G = 0 n - {\ G=의 파티션을 형식의 비어 있지 않은 블록의 짝수 L로 고려합니다.

1 = {\}= - = - {\}=- k ( n ){\이 파티션은 ( ){\ 다음과 같은 숫자의 회색 코드를 유도합니다.

전이 다중도를 정의하면

파티션에서 연속된 블록 사이의 위치 i가 변경되는 횟수가 되고, 이 파티션에 의해 유도된 (n + 2) 자리 회색 코드의 경우 스펙트럼 λ {\}}는

이 구성의 섬세한 부분은 균형 잡힌 n자리 회색 코드의 적절한 분할을 찾는 것입니다. 코드에 의해 유도된 코드가 균형을 유지하도록 하지만 이를 위해서는 전이 다중도만이 중요합니다. 두 개의 연속된 블록을 한 i{\ i 전이 위에서 결합하고 다른 i 에서 다른 블록을 분할하는 것입니다.i 전환은 전환 스펙트럼 i {\과(와) 완전히 동일한 회색 코드를 생성하므로, 예를 들어 i의 첫 {\ 전환을 두 블록 사이에 있는 전환으로 지정할 수 .R ( 4{\ R 0 R 0 ( n{\ R 0일 때 통일된 코드를 찾을 수 있으며, 이 구성은 R-ary 케이스로도 [66]확장할 수 있습니다.

장기 회색 코드

긴 실행(또는 최대 간격) 회색 코드는 동일한 위치에서 연속적인 숫자 변경 사이의 거리를 최대화합니다.즉, 모든 비트의 최소 런 길이는 [68]가능한 한 오랫동안 변하지 않습니다.

모노톤 그레이 코드

모노톤 코드는 상호 연결 네트워크 이론, 특히 프로세서의 선형 [69]배열에 대한 확장을 최소화하는 데 유용합니다.이진 문자열의 가중치를 문자열 내 1의 수로 정의하면 가중치가 엄격하게 증가하는 회색 코드를 가질 수 없음이 분명하지만 다음 가중치에 도달하기 전에 코드를 인접한 두 개의 가중치를 통해 이를 근사화할 수 있습니다.

모노톤 그레이 코드의 개념을 다음과 같이 공식화할 수 있습니다. n = ( n ){\ Q_}= (}},n}}}의 파티션을 가중치가 같은 정점 수준으로 생각해 보십시오.

0 0i\ n일 경우.이 수준은 V (i ) = ( i ){\ =\{\을(를) 합니다. n ({\ Q_ ( 1 Q_에서 유도된 Q displaystyle Q_+ and n ( ( {\i) 의 가장자리라고 그러면 단조 그레이 코드는 {\의 해밀턴 로 경로에서 1 ( {\ _{ E_ 2 E ( \ _ E_ 앞에 때마다 i\j가 됩니다

임의의 n에 대한 단조로운 n자리 그레이 코드의 우아한 구성은 2{\ P_의 하위 P_{n,j}}를 재귀적으로 구축하는 아이디어를 기반으로 합니다. {\ E_의 가장자리를 가지는 (j) {\displaystyle 2\textstyle {\P , 0= 1) {\,0}=({\ {\합니다. j < {\ j j\마다 }\}, 및

그렇지않으면.여기서, n 적합하게 정의된 치환이고, P 가 ② 에 의해 치환된 경로 P를 말합니다. 이 경로들은 두 개의 단조 n자리 그레이 ({\ G_ ( 생성합니다.

이러한 코드가 실제로 회색 코드인지 확인하는 π n{\ _의 선택은π n = E - 1 πn - ){\ _}=입니다 처음 몇 개의 값이 아래 표에 나와 있습니다.

새비지의 하위 경로들..
j = 0 j = 1 j = 2 j = 3
n = 1 0, 1
n = 2 00, 01 10, 11
n = 3 000, 001 100, 110, 010, 011 101, 111
n = 4 0000, 0001 1000, 1100, 0100, 0110, 0010, 0011 1010, 1011, 1001, 1101, 0101, 0111 1110, 1111

이러한 단조로운 회색 코드는 O(n) 시간 에 각 후속 요소를 생성할 수 있도록 효율적으로 구현할 수 있습니다.알고리즘은 코루틴을 사용하여 가장 쉽게 설명됩니다.

모노톤 코드는 연결된 모든 정점-과도 그래프가 해밀턴 경로를 포함한다는 로바즈 추측과 흥미로운 연관성을 가지고 있습니다."중간 수준" 하위 Q n + ( ){\ Q_(즉, 그 오토모피즘 그룹은 과도적이므로, 우리는 오토모피즘을 얻기 위해 좌표뿐만 아니라 이진 숫자들에 재라벨을 붙일 수 있으므로) 각 정점은 동일한 "로컬 환경"을 가지고 다른 정점들과 구별될 수 없습니다.) 그리고 문제이 하위 그래프에서 해밀턴 경로를 찾는 것은 "중간 수준 문제"라고 불리며, 이는 더 일반적인 추측에 대한 통찰력을 제공할 수 있습니다.질문은 n {\ n 15 긍정적으로 대답되었으며, 단조 코드에 대한 이전 구성은 길이가 최소 0.839N인 해밀턴 경로를 보장하며, 여기서 N은 중간 수준 하위 [70]그래프의 정점 수입니다.

베켓-회색 코드

그레이 코드의 또 다른 종류인 베켓-그레이 코드는 대칭성에 관심이 있었던 아일랜드 극작가 사무엘 베켓의 이름을 따서 지어졌습니다.그의 연극 "쿼드"는 4명의 배우가 등장하고 16개의 시대로 나뉩니다.4명의 배우 중 한 명이 무대에 오르거나 퇴장하는 것으로 매 회차가 끝납니다.연극은 빈 무대로 시작과 끝을 맺는데, 베케트는 배우들의 각 부분집합이 정확히 한 [71]번씩 무대에 등장하기를 원했습니다.분명히 현재 무대에 있는 배우들의 집합은 4비트 이진 그레이 코드로 표현될 수 있습니다.그러나 베케트는 대본에 추가적인 제한을 두었는데, 그는 가장 오랫동안 무대에 섰던 배우가 항상 퇴장할 수 있도록 배우들이 출입하기를 바랐습니다.그 후 배우들선입선출 대기열로 대표될 수 있고, 그래서 (무대에 있는 배우들 중) 대기열에 있는 배우가 항상 가장 [71]먼저 대기열에 있는 배우가 될 수 있습니다.베케트는 그의 플레이에 대한 베케트-그레이 코드를 찾을 수 없었고, 실제로 가능한 모든 시퀀스의 철저한 목록은 n = 4에 대해 그러한 코드가 존재하지 않음을 나타냅니다.이러한 코드는 n = 2, 5, 6, 7, 8에 대해 존재하며 n = 3 또는 4에는 존재하지 않는 것으로 오늘날 알려져 있습니다.8비트 베켓-그레이 코드의 예는 Donald Knuth의 Art of Computer Programming에서 [13]찾을 수 있습니다.Sawada와 Wong에 따르면 n = 6에 대한 탐색 공간은 15시간 안에 탐색할 수 있으며, n = 7의 경우에 대한 9,500개 이상의 해결책이 발견되었습니다.

스네이크 인 더 박스 코드

1~4차원 n에 대한 스네이크 인 더 박스 문제에서 스네이크(L) 및 코일(Lc)의s 최대 길이

스네이크 더 박스 코드 또는 뱀은 n차원 하이퍼큐브 그래프에서 유도 경로의 노드 시퀀스이고, 코일 인 더 박스 [73]코드 또는 코일은 하이퍼큐브에서 유도 사이클의 노드 시퀀스입니다.회색 코드로 보는 이 시퀀스는 단일 비트 코딩 오류를 감지할 수 있는 특성을 가집니다.[5]유형의 코드는 1950년대 후반에 윌리엄 H. 코츠에 의해 처음 기술되었습니다; 그 이후로 주어진 하이퍼큐브 차원에서 가능한 가장 많은 코드워드를 갖는 코드를 찾는 많은 연구가 있었습니다.

단선 그레이 코드

또 다른 종류의 그레이 코드는 노먼 B가 개발한 싱글 트랙 그레이 코드(STGC)입니다.Hiltgen, Paterson, Brandestini가 "Single-track Gray codes"(1996)[76][77]에서 속도를 내고 다듬었습니다[74][75].STGC는 두 개의 연속 단어가 정확히 하나의 위치에서 서로 다른 길이 n의 P 고유 이진 인코딩의 순환 목록이며, 목록을 P × n 행렬로 검사할 때 각 열은 첫 번째 [78]열의 순환 이동입니다.

STGC 로터를 애니메이션화하고 색상으로 구분한 버전입니다.

이 이름은 회전식 인코더와 함께 사용하는 데서 비롯되었으며, 접촉에 의해 다수의 트랙이 감지되어 각각의 출력이 0 또는 1이 됩니다.서로 다른 접점이 정확히 같은 시간에 전환되지 않아 발생하는 잡음을 줄이기 위해 접점에 의해 출력되는 데이터가 회색 코드가 되도록 트랙을 설정하는 것이 좋습니다.높은 각도 정확도를 얻으려면 많은 접점이 필요합니다. 최소 1° 정확도를 달성하려면 회전당 최소 360개의 서로 다른 위치가 필요하므로 최소 9비트의 데이터가 필요하므로 동일한 수의 접점이 필요합니다.

모든 접점이 동일한 각도 위치에 배치된 경우 최소 1° 정확도의 표준 BRGC를 얻으려면 9개의 트랙이 필요합니다.그러나 제조업체가 접점을 다른 각도 위치(중심 축에서 같은 거리)로 이동시킨 경우, 동일한 출력을 제공하기 위해 해당 "링 패턴"을 동일한 각도로 회전시켜야 합니다.가장 의미 있는 비트(그림 1의 안쪽 링)를 충분히 회전시키면 다음 링 아웃과 정확히 일치합니다.그러면 두 링이 동일하므로 내부 링을 잘라낼 수 있으며, 해당 링의 센서가 동일한 나머지 링으로 이동합니다(그러나 해당 링의 다른 센서와 각도에서 오프셋됨).하나의 링 위에 있는 두 개의 센서는 직교 인코더를 만듭니다.이를 통해 "1° 해상도" 각도 인코더의 트랙 수가 8개로 줄어듭니다.트랙 수를 더 줄이는 것은 BRGC로는 불가능합니다.

여러 해 동안 Torsten[79] Sillke와 다른 수학자들은 하나의 트랙에서 연속적인 위치가 2-센서, 1-트랙 직교 인코더를 제외하고는 하나의 센서에서만 차이가 나는 위치를 인코딩하는 것은 불가능하다고 믿었습니다.따라서 8개 트랙이 너무 큰 응용 프로그램의 경우, 사람들은 단일 트랙 증분 인코더(4차 인코더) 또는 2트랙 "4차 인코더 + 기준 노치" 인코더를 사용했습니다.

노먼 B.그러나 Speedding은 1994년에 특허를 등록했는데,[74] 그것이 가능하다는 것을 보여주는 몇 가지 예들이 있습니다.하나의 트랙에서 n개의 센서로 2개의 위치를 구분할n 수는 없지만, 그에 가까운 개수를 구분할 는 있습니다.에치온과 패터슨은 n 자체가 2의 거듭제곱일 n개의 센서가 최대n 2 - 2n 위치를 구별할 수 있고 프라임의 한계는 2 - 2 [80]위치라고n 추측합니다.저자들은 계속해서 자신들이 최적이라고 생각하는 길이 9의 504 위치 단일 트랙 코드를 생성했습니다.이 숫자는 2 = 256보다 크기 때문에, 어떤 코드에 의해서도 8개 이상의 센서가 필요하지만, BRGC는 9개의 센서로 512개의 위치를 구별할 수 있습니다.

P = 30 n = 5에 대한 STGC가 여기서 재현됩니다.

30개 위치에 대한 단일 트랙 회색 코드
코드 코드 코드 코드 코드
10000 72° 01000 144° 00100 216° 00010 288° 00001
12° 10100 84° 01010 156° 00101 228° 10010 300° 01001
24° 11100 96° 01110 168° 00111 240° 10011 312° 11001
36° 11110 108° 01111 180° 10111 252° 11011 324° 11101
48° 11010 120° 01101 192° 10110 264° 01011 336° 10101
60° 11000 132° 01100 204° 00110 276° 00011 348° 10001

각 열은 첫 번째 열의 순환 이동이며, 임의의 행에서 다음 행으로 한 비트만 [81]변경됩니다.단일 트랙 특성(코드 체인과 같은)은 하나의 트랙만 필요하므로 이러한 휠의 제작에 유용합니다(BRGC와 비교). 따라서 비용과 크기를 줄일 수 있습니다.회색 코드 특성은 한 번에 하나의 센서만 변경되므로(De Bruijn 시퀀스라고도 불리는 체인 코드와 비교하여) 유용합니다. 따라서 두 이산 상태 간의 전환 중 불확실성은 장치가 [82]해결할 수 있는 각도 측정 단위의 플러스 또는 마이너스만 됩니다.

1도 각도 해상도를 표시하는 9비트 싱글 트랙 그레이 코드.

이 30도 예제가 추가된 이후로 더 높은 각도 분해능을 가진 예제에 많은 관심이 있었습니다.2008년, 게리 윌리엄스는 이전 [83]연구를 바탕으로[80] 1도 해상도를 제공하는 9비트 싱글 트랙 그레이 코드를 발견했습니다.이 회색 코드는 실제 장치를 디자인하기 위해 사용되었으며, 이 장치는 Thingiverse 사이트에 게시되었습니다.이 장치는[84] 에첸셉(플로리안 바우어)이 2022년 9월 설계했습니다.

P = 360 n = 9에 대한 STGC가 여기서 재현됩니다.

360 위치에 대한 단일 트랙 회색 코드
코드 코드 코드 코드 코드 코드 코드 코드 코드
100000001 110000001 111000001 111000011 111000111 111001111 111011111 111011011 101011011
101011111 10° 101011101 11° 101010101 12° 101010111 13° 101110111 14° 001110111 15° 001010111 16° 001011111 17° 001011011
18° 001011001 19° 001111001 20° 001111101 21° 000111101 22° 000110101 23° 000100101 24° 000101101 25° 000101001 26° 000111001
27° 000110001 28° 000010001 29° 000011001 30° 000001001 31° 100001001 32° 100001101 33° 100000101 34° 110000101 35° 010000101
36° 010000111 37° 010000011 38° 010000001 39° 000000001 40° 000000011 41° 100000011 42° 110000011 43° 110000111 44° 110001111
45° 110011111 46° 110111111 47° 110110111 48° 010110111 49° 010111111 50° 010111011 51° 010101011 52° 010101111 53° 011101111
54° 011101110 55° 010101110 56° 010111110 57° 010110110 58° 010110010 59° 011110010 60° 011111010 61° 001111010 62° 001101010
63° 001001010 64° 001011010 65° 001010010 66° 001110010 67° 001100010 68° 000100010 69° 000110010 70° 000010010 71° 000010011
72° 000011011 73° 000001011 74° 100001011 75° 100001010 76° 100001110 77° 100000110 78° 100000010 79° 000000010 80° 000000110
81° 000000111 82° 100000111 83° 100001111 84° 100011111 85° 100111111 86° 101111111 87° 101101111 88° 101101110 89° 101111110
90° 101110110 91° 101010110 92° 101011110 93° 111011110 94° 111011100 95° 101011100 96° 101111100 97° 101101100 98° 101100100
99° 111100100 100° 111110100 101° 011110100 102° 011010100 103° 010010100 104° 010110100 105° 010100100 106° 011100100 107° 011000100
99° 111100100 100° 111110100 101° 011110100 102° 011010100 103° 010010100 104° 010110100 105° 010100100 106° 011100100 107° 011000100
108° 001000100 109° 001100100 110° 000100100 111° 000100110 112° 000110110 113° 000010110 114° 000010111 115° 000010101 116° 000011101
117° 000001101 118° 000000101 119° 000000100 120° 000001100 121° 000001110 122° 000001111 123° 000011111 124° 000111111 125° 001111111
126° 011111111 127° 011011111 128° 011011101 129° 011111101 130° 011101101 131° 010101101 132° 010111101 133° 110111101 134° 110111001
135° 010111001 136° 011111001 137° 011011001 138° 011001001 139° 111001001 140° 111101001 141° 111101000 142° 110101000 143° 100101000
144° 101101000 145° 101001000 146° 111001000 147° 110001000 148° 010001000 149° 011001000 150° 001001000 151° 001001100 152° 001101100
153° 000101100 154° 000101110 155° 000101010 156° 000111010 157° 000011010 158° 000001010 159° 000001000 160° 000011000 161° 000011100
162° 000011110 163° 000111110 164° 001111110 165° 011111110 166° 111111110 167° 110111110 168° 110111010 169° 111111010 170° 111011010
171° 101011010 172° 101111010 173° 101111011 174° 101110011 175° 101110010 176° 111110010 177° 110110010 178° 110010010 179° 110010011
180° 111010011 181° 111010001 182° 101010001 183° 001010001 184° 011010001 185° 010010001 186° 110010001 187° 100010001 188° 100010000
189° 110010000 190° 010010000 191° 010011000 192° 011011000 193° 001011000 194° 001011100 195° 001010100 196° 001110100 197° 000110100
198° 000010100 199° 000010000 200° 000110000 201° 000111000 202° 000111100 203° 001111100 204° 011111100 205° 111111100 206° 111111101
207° 101111101 208° 101110101 209° 111110101 210° 110110101 211° 010110101 212° 011110101 213° 011110111 214° 011100111 215° 011100101
216° 111100101 217° 101100101 218° 100100101 219° 100100111 220° 110100111 221° 110100011 222° 010100011 223° 010100010 224° 110100010
225° 100100010 226° 100100011 227° 000100011 228° 000100001 229° 100100001 230° 100100000 231° 100110000 232° 110110000 233° 010110000
234° 010111000 235° 010101000 236° 011101000 237° 001101000 238° 000101000 239° 000100000 240° 001100000 241° 001110000 242° 001111000
243° 011111000 244° 111111000 245° 111111001 246° 111111011 247° 011111011 248° 011101011 249° 111101011 250° 101101011 251° 101101010
252° 111101010 253° 111101110 254° 111001110 255° 111001010 256° 111001011 257° 011001011 258° 001001011 259° 001001111 260° 101001111
261° 101000111 262° 101000110 263° 101000100 264° 101000101 265° 001000101 266° 001000111 267° 001000110 268° 001000010 269° 001000011
270° 001000001 271° 001100001 272° 101100001 273° 101100000 274° 101110000 275° 101010000 276° 111010000 277° 011010000 278° 001010000
279° 001000000 280° 011000000 281° 011100000 282° 011110000 283° 111110000 284° 111110001 285° 111110011 286° 111110111 287° 111110110
288° 111010110 289° 111010111 290° 011010111 291° 011010101 292° 111010101 293° 111011101 294° 110011101 295° 110010101 296° 110010111
297° 110010110 298° 010010110 299° 010011110 300° 010011111 301° 010001111 302° 010001101 303° 010001001 304° 010001011 305° 010001010
306° 010001110 307° 010001100 308° 010000100 309° 010000110 310° 010000010 311° 011000010 312° 011000011 313° 011000001 314° 011100001
315° 010100001 316° 110100001 317° 110100000 318° 010100000 319° 010000000 320° 110000000 321° 111000000 322° 111100000 323° 111100001
324° 111100011 325° 111100111 326° 111101111 327° 111101101 328° 110101101 329° 110101111 330° 110101110 331° 110101010 332° 110101011
333° 110111011 334° 100111011 335° 100101011 336° 100101111 337° 100101101 338° 100101100 339° 100111100 340° 100111110 341° 100011110
342° 100011010 343° 100010010 344° 100010110 345° 100010100 346° 100011100 347° 100011000 348° 100001000 349° 100001100 350° 100000100
351° 110000100 352° 110000110 353° 110000010 354° 111000010 355° 101000010 356° 101000011 357° 101000001 358° 101000000 359° 100000000
센서 9개가 40°로 분리된 단일 트랙 그레이 코드에 대한 20개 트랙의 시작 및 종료 각도
시작 각도 종료 각도 길이
3 4 2
23 28 6
31 37 7
44 48 5
56 60 5
64 71 8
74 76 3
88 91 4
94 96 3
99 104 6
110 115 6
131 134 4
138 154 23
173 181 9
186 187 2
220 238 19
242 246 5
273 279 7
286 289 4
307 360 54

2차원 그레이 코드

사각형 16QAM을 위한 회색 부호의 별자리도

2차원 회색 코드는 통신에 사용되어 별자리의 QAM(quadrature amplitude modulation) 인접 지점에서 비트 오류의 수를 최소화합니다.일반적인 인코딩에서 수평 및 수직 인접 성상도 점은 단일 비트로 다르고 대각선 인접점은 [85]2비트로 다릅니다.

2차원 회색 코드는 또한 위치 식별 체계에서 사용되는데, 여기서 코드는 지구 표면의 메르카토르 투영과 같은 영역 지도에 적용되고 만하임 메트릭과 같은 적절한 순환 2차원 거리 함수는 두 인코딩된 위치 사이의 거리를 계산하는 데 사용됩니다.따라서 해밍 거리의 특성과 메르카토르 투영의 [86]순환적 연속을 결합합니다.

초과-회색

해당 값에서 특정 코드 값의 하위 섹션(예: 4비트 그레이 코드의 마지막 3비트)을 추출하면 결과 코드는 "과잉 그레이 코드"가 됩니다.이 코드는 원래 값이 더 증가할 경우 추출된 비트에서 역으로 카운트하는 속성을 보여줍니다.그 이유는 그레이 인코딩된 값이 "가장 높은" 값을 초과하여 증가할 때 고전적인 이진 인코딩에서 알려진 오버플로 동작을 보여주지 않기 때문입니다.

예:가장 높은 3비트 회색 코드인 7은 (0)100으로 인코딩됩니다.1을 더하면 숫자 8이 되며 회색으로 1100으로 인코딩됩니다.원래 4비트 코드를 더 늘리면 마지막 3비트는 오버플로우되지 않고 거꾸로 계산됩니다.

따라서 그레이 인코딩된 여러 값을 직렬 방식으로 출력하는 센서를 사용할 경우 센서가 하나의 단일 그레이 코드로 인코딩된 여러 값을 생성하는지 아니면 별도의 그레이 코드로 생성하는지에 주의해야 합니다. 그렇지 않으면 "오버플로우"가 예상될 때 값이 거꾸로 카운트되는 것처럼 보일 수 있기 때문입니다.

회색 등각법

사영 매핑 {0 ↔ 00, 1 ↔ 01, 2 ↔ 11,3 ↔ 10 }은(는) 해밍 거리가 주는 메트릭과 Lee 거리가 주는 메트릭이 있는 _일반적인 모듈러 산술)에 대한 메트릭 사이의 등각을 설정합니다매핑은 해밍 2 {\ _ m {4}^{m의 등각으로 적합하게 확장됩니다. 이것의 중요성은 링-l {\ _에서 그레이-맵 이미지로서 다양한 "좋은" 코드와 선형 코드 사이의 대응을 설정하는 데 있습니다{\ _[87][88]near 코드입니다.

관련코드

그레이 코드와 유사한 이진 코드는 다음과 같습니다.

다음 BCD(Binary Coded Decimal) 코드도 그레이 코드 변형입니다.

4비트 단위 거리 BCD 코드[nb 6]
이름. 조금 0 1 2 3 4 5 6 7 8 9 무게[nb7] 타는 곳 불평. 주기적인 5s 댓글
그레이 BCD 4 0 0 0 0 0 0 0 0 1 1 0—3 4 (3[nb 8]) 아니요. (2, 4, 8, 16) 아니요. [110][111]
3 0 0 0 0 1 1 1 1 1 1
2 0 0 1 1 1 1 0 0 0 0
1 0 1 1 0 0 1 1 0 0 1
폴. 4 1 0 0 0 0 0 0 0 1 1 1—3 4 (3[nb 8]) 아니요. 2, 10 아니요. [125]
3 0 0 0 0 1 1 1 1 1 1
2 0 0 1 1 1 1 0 0 0 0
1 1 1 1 0 0 1 1 0 0 1
글릭슨 4 0 0 0 0 0 0 0 0 1 1 0—3 4 아니요. 2, 4, 8, 10 (최소값 +1) [122][110][111][123][124][nb5]
3 0 0 0 0 1 1 1 1 1 0
2 0 0 1 1 1 1 0 0 0 0
1 0 1 1 0 0 1 1 0 0 0
톰킨스 1세 4 0 0 0 0 0 1 1 1 1 1 0—4 2 아니요. 2, 4, 10 네. [4][110][111]
3 0 0 0 0 1 1 1 1 1 0
2 0 0 1 1 1 1 1 0 0 0
1 0 1 1 0 0 0 1 1 0 0
오브라이언 1세 (와트) 4 0 0 0 0 0 1 1 1 1 1 0—3 4 9[103][104][nb 9] 2, 4, 10 네. [109][110][111][nb5]
3 0 0 0 0 1 1 0 0 0 0
2 0 0 1 1 1 1 1 1 0 0
1 0 1 1 0 0 0 0 1 1 0
페더릭 (RAE) 4 0 0 0 0 0 1 1 1 1 1 1—3 3 9[103][104][nb 9] 2, 10 네. [19][107][nb4]
3 1 0 0 0 1 1 0 0 0 1
2 0 0 1 1 1 1 1 1 0 0
1 1 1 1 0 0 0 0 1 1 1
오브라이언 2세 4 0 0 0 0 0 1 1 1 1 1 1—3 3 9[91][103][104][nb 9] 2, 10 네. [109][110][111][nb4]
3 0 0 0 1 1 1 1 0 0 0
2 0 1 1 1 0 0 1 1 1 0
1 1 1 0 0 0 0 0 0 1 1
서스킨드 4 0 0 0 0 0 1 1 1 1 1 1—4 3 9[nb 9] 2, 10 네. [6]
3 0 0 1 1 1 1 1 1 0 0
2 0 1 1 1 0 0 1 1 1 0
1 1 1 1 0 0 0 0 1 1 1
클라르 4 0 0 0 0 0 1 1 1 1 1 0—4 4 (3[nb 8]) 9[nb 9] 2, 10 네. [126][127]
3 0 0 0 1 1 1 1 0 0 0
2 0 0 1 1 1 1 1 1 0 0
1 0 1 1 1 0 0 1 1 1 0
톰킨스 2세 4 0 0 0 0 0 1 1 1 1 1 1—3 2 9[nb 10] 2, 10 네. [4][110][111]
3 0 0 1 1 1 1 1 0 0 0
2 1 1 1 0 0 0 0 0 1 1
1 0 1 1 1 0 0 1 1 1 0
초과-3회색 4 0 0 0 0 0 1 1 1 1 1 1—4 4 9[103][104][nb 9] 2, 10 네. [8][103]
3 0 1 1 1 1 1 1 1 1 0
2 1 1 1 0 0 0 0 1 1 1
1 0 0 1 1 0 0 1 1 0 0

참고 항목

메모들

  1. ^ a b c 간단한 반전 규칙을 적용하면 그레이 코드와 오브라이언 코드 I를 각각 8421 순수 이진 코드와 2421 에이켄 코드로 번역하여 연산을 [C]용이하게 할 수 있습니다.
  2. ^ 시퀀스 0, 1, 0, 2, 0, 1, 0, 3, …(OEIS의 시퀀스 A007814).
  3. ^ a b c 그레이 코드에는 "수정"이라고 불리는 몇 가지 종류의 변형이 있습니다.글리슨 코드는 수정된 그레이 [D]코드라고 불리기도 합니다.루칼 코드는 MRB([E]modified reflected binary code)라고도 불립니다.오브라이언 코드 I 또는 와츠 코드를 반사 바이너리 수정 그레이 [F]코드라고 부르기도 합니다.
  4. ^ a b c d 오브라이언 코드 II페더릭 코드는 3개의 비트열을 교환하고 반전시킴으로써 서로 전달될 수 있습니다.
  5. ^ a b c d Glixon 코드와 O'Brien 코드 I는 두 쌍의 비트 행을 교환하고, 네 개의 비트 행을 개별적으로 쉬프트하고, 그 중 하나를 반전시킴으로써 서로 전달될 수 있습니다.
  6. ^ 다른 단위 거리 BCD 코드로는 그레이가 아닌 5비트 Libaw-Craig1-2-1 코드가 있습니다.
  7. ^ 코드의 대상 애플리케이션에 따라, 코드의 해밍 가중치는 물리적인 이유로도 코딩 이론적 고려를 넘어서는 중요한 특성이 될 수 있습니다.일부 상황에서는 올 클리어 및/또는 올 셋 상태를 생략해야 합니다(예: 비도전성 또는 단락 상태를 방지하기 위해). 가장 높은 사용 중량을 가능한 한 낮게 유지하거나(예: 판독기 회로의 전력 소모를 줄이기 위해), 사용 중량의 분산을 작게 유지하는 것이 바람직할 수 있습니다(예:).음향 소음 또는 전류 변동을 줄이기 위해 사용됩니다.
  8. ^ a b c 회색 BCD, PaulClar 코드의 경우 중간 트랙 중 하나의 반전이 허용되는 경우 필요한 판독 트랙 수를 4개에서 3개로 줄일 수 있습니다.
  9. ^ a b c d e f O'Brien 코드 I 및 IIPetherick, Susskind, Clar Excess-3 Gray 코드의 경우 가장 유의한(네 번째) 이진수를 반전시켜 9s 보어를 유도할 수 있습니다.
  10. ^ 톰킨스 코드 II의 경우, 처음 세 자리를 뒤집고 두 중간 이진 자리를 맞바꾸면 9s 보어를 유도할 수 있습니다.

참고문헌

  1. ^ a b c Lucal, Harold M. (December 1959). "Arithmetic Operations for Digital Computers Using a Modified Reflected Binary". IRE Transactions on Electronic Computers. EC-8 (4): 449–458. doi:10.1109/TEC.1959.5222057. ISSN 0367-9950. S2CID 206673385. (10페이지)
  2. ^ a b c Sellers, Jr., Frederick F.; Hsiao, Mu-Yue; Bearnson, Leroy W. (November 1968). Error Detecting Logic for Digital Computers (1st ed.). New York, USA: McGraw-Hill Book Company. pp. 152–164. LCCN 68-16491. OCLC 439460.
  3. ^ Gray, Joel (March 2020). "Understanding Gray Code: A Reliable Encoding System". graycode.ie. Section: Conclusion. Retrieved 2023-06-30.
  4. ^ a b c d Tompkins, Howard E. (September 1956) [1956-07-16]. "Unit-Distance Binary-Decimal Codes for Two-Track Commutation". IRE Transactions on Electronic Computers. Correspondence. Moore School of Electrical Engineering, University of Pennsylvania, Philadelphia, Pennsylvania, USA. EC-5 (3): 139. doi:10.1109/TEC.1956.5219934. ISSN 0367-9950. Retrieved 2020-05-18. (1페이지)
  5. ^ a b Kautz, William H. (June 1958). "Unit-Distance Error-Checking Codes". IRE Transactions on Electronic Computers. EC-7 (2): 179–180. doi:10.1109/TEC.1958.5222529. ISSN 0367-9950. S2CID 26649532. (2페이지)
  6. ^ a b Susskind, Alfred Kriss; Ward, John Erwin (1958-03-28) [1957, 1956]. "III.F. Unit-Distance Codes / VI.E.2. Reflected Binary Codes". Written at Cambridge, Massachusetts, USA. In Susskind, Alfred Kriss (ed.). Notes on Analog-Digital Conversion Techniques. Technology Books in Science and Engineering. Vol. 1 (3 ed.). New York, USA: Technology Press of the Massachusetts Institute of Technology / John Wiley & Sons, Inc. / Chapman & Hall, Ltd. pp. 3-10–3-16 [3-13–3-16], 6-65–6-60 [6-60]. (x+416+2페이지) (NB).이 책의 내용은 원래 1956년과 1957년에 열린 특별한 여름 프로그램을 위해 MIT 전기공학부서보메카니즘 연구소의 직원들에 의해 준비되었습니다.Susskind의 "읽기형 코드"는 실제로 여기에 나와 있는 코드의 작은 변형으로, 대칭을 더 잘 나타내기 위해 가장 중요한 두 비트 행이 스왑됩니다.또한, 2개의 비트열을 스왑하고 그 중 하나를 반전시키면 Petherick 코드로 코드를 전달할 수 있고, 2개의 비트열을 스왑하고 반전시키면 O'Brien 코드 II로 코드를 전달할 수 있습니다.)
  7. ^ a b Chinal, Jean P. (January 1973). "3.3. Unit Distance Codes". Written at Paris, France. Design Methods for Digital Systems. Translated by Preston, Alan; Summer, Arthur (1st English ed.). Berlin, Germany: Akademie-Verlag / Springer-Verlag. p. 50. doi:10.1007/978-3-642-86187-1. ISBN 978-0-387-05871-9. S2CID 60362404. License No. 202-100/542/73. Order No. 7617470(6047) ES 19 B 1 / 20 K 3. Retrieved 2020-06-21. (xviii+506페이지) (NB.1967년 프랑스어 원서의 이름은 Editions Dunod [fr]에 의해 출판된 "Techniques Booleenne et Calculus Armithétiques"입니다.
  8. ^ a b c d e f Military Handbook: Encoders – Shaft Angle To Digital (PDF). United States Department of Defense. 1991-09-30. MIL-HDBK-231A. Archived (PDF) from the original on 2020-07-25. Retrieved 2020-07-25. (NB. MIL-HDBK-231(AS)(1970-07-01)을 대체합니다.)
  9. ^ a b c Spaulding, Carl P. (1965-01-12) [1954-03-09]. "Digital coding and translating system" (PDF). Monrovia, California, USA: Datex Corporation. U.S. Patent 3165731A. Serial No. 415058. Archived (PDF) from the original on 2020-08-05. Retrieved 2018-01-21. (28페이지)
  10. ^ a b Russell, A. (August 1964). "Some Binary Codes and a Novel Five-Channel Code". Control (Systems, Instrumentation, Data Processing, Automation, Management, incorporating Automation Progress). Special Features. London, UK: Morgan-Grampain (Publishers) Limited. 8 (74): 399–404. Retrieved 2020-06-22. (6페이지)
  11. ^ a b c [1]Stibitz, George Robert (1943-01-12) [1941-11-26]. "Binary counter". New York, USA: Bell Telephone Laboratories, Incorporated. U.S. Patent 2,307,868. Serial No. 420537. Retrieved 2020-05-24. p. 2, right column, rows 43–73: […] A clearer idea of the position of the balls after each pulse will be obtained if the set of balls is represented by a number having a similar number of digits, each of which may have one of two arbitrary values, for example 0 and 1. If the upper position is called 0 and the lower position […] 1, then the setting of the counter […] may be read from left to right as 0,100,000. […] Following is a translation of the number of pulses received into this form of binary notation for the first sixteen pulses as received on the first five balls […] Pulse number […] Binary notation […] (4페이지)
  12. ^ a b c d e Winder, C. Farrell (October 1959). "Shaft Angle Encoders Afford High Accuracy" (PDF). Electronic Industries. Chilton Company. 18 (10): 76–80. Archived from the original (PDF) on 2020-09-28. Retrieved 2018-01-14. p. 78: […] The type of code wheel most popular in optical encoders contains a cyclic binary code pattern designed to give a cyclic sequence of "on-off" outputs. The cyclic binary code is also known as the cyclic progression code, the reflected binary code, and the Gray code. This code was originated by G. R. Stibitz, of Bell Telephone Laboratories, and was first proposed for pulse-code modulation systems by Frank Gray, also of BTL. Thus the name Gray code. The Gray or cyclic code is used mainly to eliminate the possibility of errors at code transition which could result in gross ambiguities. […]
  13. ^ a b c d e f g h i Knuth, Donald Ervin (2014-09-12). "Enumeration and Backtracking / Generating all n-tuples". The Art of Computer Programming, Volume 4A: Combinatorial Algorithms, Part 1. Vol. 4A (1 ed.). Addison-Wesley Professional. pp. 442–443. ISBN 978-0-13348885-2. (912페이지)
  14. ^ a b Gray, Frank (1953-03-17) [1947-11-13]. Pulse Code Communication (PDF). New York, USA: Bell Telephone Laboratories, Incorporated. U.S. Patent 2,632,058. Serial No. 785697. Archived (PDF) from the original on 2020-08-05. Retrieved 2020-08-05. (13페이지)
  15. ^ a b Goldberg, David Edward (1989). Genetic Algorithms in Search, Optimization, and Machine Learning (1 ed.). Reading, Massachusetts, USA: Addison-Wesley. Bibcode:1989gaso.book.....G.
  16. ^ Breckman, Jack (1956-01-31) [1953-12-31]. Encoding Circuit (PDF). Long Branch, New Jersey, USA: US Secretary of the Army. U.S. Patent 2,733,432. Serial No. 401738. Archived (PDF) from the original on 2020-08-05. Retrieved 2020-08-05. (8페이지)
  17. ^ a b Ragland, Earl Albert; Schultheis, Jr., Harry B. (1958-02-11) [1953-10-16]. Direction-Sensitive Binary Code Position Control System (PDF). North Hollywood, California, USA: Bendix Aviation Corporation. U.S. Patent 2,823,345. Serial No. 386524. Archived (PDF) from the original on 2020-08-05. Retrieved 2020-08-05. (10페이지)
  18. ^ Domeshek, Sol; Reiner, Stewart (1958-06-24) [1954-01-08]. Automatic Rectification System (PDF). US Secretary of the Navy. U.S. Patent 2,839,974. Serial No. 403085. Archived (PDF) from the original on 2020-08-05. Retrieved 2020-08-05. (8페이지)
  19. ^ a b c Petherick, Edward John (October 1953). A Cyclic Progressive Binary-coded-decimal System of Representing Numbers (Technical Note MS15). Farnborough, UK: Royal Aircraft Establishment (RAE). (4페이지) (NB. 숫자를 표현하는 순환 부호화된 이진 부호화된 십진법 시스템이라고도 함)
  20. ^ a b Evans, David Silvester (1960). Fundamentals of Digital Instrumentation (1 ed.). London, UK: Hilger & Watts Ltd. Retrieved 2020-05-24. (39페이지)
  21. ^ a b Evans, David Silvester (March 1961). "Chapter Three: Direct Reading from Coded Scales". Digital Data: Their derivation and reduction for analysis and process control (1 ed.). London, UK: Hilger & Watts Ltd / Interscience Publishers. pp. 18–23. Retrieved 2020-05-24. p. 20–23: […] Decoding. […] To decode C.P.B. or W.R.D. codes, a simple inversion rule can be applied. The readings of the higher tracks determine the way in which the lower tracks are translated. The inversion rule is applied line by line for the C.P.B. and for the W.R.D. it is applied decade by decade or line by line. Starting therefore with the top or slowest changing track of the C.P.B., if the result is odd (1) the next track value has to be inverted, i.e. 0 for 1 and 1 for 0. If, however, the first track is even (0), the second track is left as read, i.e. 0 for 0 and 1 for 1. Again, if the resultant reading of the second track is odd, the third track reading is inverted and so on. When an odd is changed to an even the line below is not inverted and when an even is changed to an odd the line below is inverted. The result of applying this rule to the pattern […] is the pure binary (P.B.) pattern […] where each track or digit can be given a definite numerical value (in this instance 1, 2, 4, 8, etc.). […] Using the line-by-line inversion rule on the W.R.D. code produces [a] pattern [of 1, 2, 4, 2 code] where again the digits can be given numerical values and summed decade by decade. The summing of the digits can be very useful, for example, in a high-speed scanning system; but in a parallel decoding system […], it is usual to treat each binary quartet or decade as an entity. In other words, if the first or more significant decade is odd, the second decade is rectified or complemented by inverting the D track and so on, the result being the repeating pattern of [rectified W.R.D. code]. This is an extremely easy thing to achieve since the only change required is the inversion of the meaning of the D track or complementing digit. […] (8+82페이지) (NB.저자는 그레이를 전혀 언급하지 않고 표준 그레이 코드를 "Cyclic Performed Binary Code"(C.P.B.)라고 부르는데, 책 색인에서 "Cyclic Pure Binary Code"라고 잘못 표기합니다.)
  22. ^ Newson, P. A. (1965). Tables for the Binary Encoding of Angles (1 ed.). United Kingdom Atomic Energy Authority, Research Group, Atomic Energy Research Establishment, Harwell, UK: H. M. Stationery Office. Retrieved 2020-05-24. (12페이지)
  23. ^ Heath, F. G. (September 1961). "Pioneers Of Binary Coding". Journal of the Institution of Electrical Engineers. Manchester College of Science and Technology, Faculty of Technology of the University of Manchester, Manchester, UK: Institution of Engineering and Technology (IET). 7 (81): 539–541. doi:10.1049/jiee-3.1961.0300. Retrieved 2020-06-22. (3페이지)
  24. ^ Cattermole, Kenneth W. (1969). Written at Harlow, Essex, UK. Principles of pulse code modulation (1 ed.). London, UK / New York, USA: Iliffe Books Ltd. / American Elsevier Publishing Company, Inc. pp. 245, 434. ISBN 978-0-444-19747-4. LCCN 78-80432. SBN 444-19747-8. p. 245: […] There seems to be some confusion about the attributation of this code, because two inventors named Gray have been associated with it. When I first heard the name I took it as referring to Elisha Gray, and Heath testifies to his usage of it. Many people take it as referring to Frank Gray of Bell Telephone Laboratories, who in 1947 first proposed its use in coding tubes: his patent is listed in the bibliography. […] (2+448+2페이지)
  25. ^ Edwards, Anthony William Fairbank (2004). Cogwheels of the Mind: The Story of Venn Diagrams. Baltimore, Maryland, USA: Johns Hopkins University Press. pp. 48, 50. ISBN 0-8018-7434-3.
  26. ^ [2]Gros, Luc-Agathon-Louis (1872). Théorie du baguenodier par un clerc de notaire lyonnais (in French) (1 ed.). Lyon, France: Aimé Vingtrinier. Archived from the original on 2017-04-03. Retrieved 2020-12-17. (2+16+4페이지, 4페이지 접기) (NB.이 책자는 익명으로 발간됐지만, 루이스 그로스가 쓴 것으로 알려졌습니다.)
  27. ^ Lucas, Édouard (November 1883). La tour d'Hanoï: Véritable casse tête annamite - Jeu rapporté du Tonkin par le Professeur N. Claus (de Siam) Mandarin du Collège Li Sou Stian! (in French). Imprimerie Paul Bousrez, Tours. (NB. N. 클라우스 드 시암은 작가 에두아르 루카스의 가명인 루카스 다미엔스의 애너그램입니다.)
  28. ^ de Parville, Henri [in French], ed. (1883-12-27). "La tour d'Hanoï, véritable casse-tête annamite, jeu rapporté du Tonkin par le professeur N. Claus (de Siam), mandarin du collège Li-Sou-Stian. Un vrai casse-tête, en effet, mais intéressant. Nous ne saurions mieux remercier le mandarin de son aimable intention à l'égard d'un profane qu'en signalant la Tour d'Hanoï aux personnes patientes possédées par le démon du jeu". Journal des Débats Politiques et Littéraires (Review). Revue des science (in French) (Matin ed.). Paris, France: 1–2 [2]. ark:/12148/bpt6k462461g. Archived from the original on 2020-12-18. Retrieved 2020-12-18. (1페이지)
  29. ^ [3]Allardice, R. E.; Fraser, A. Y. (February 1883). Allardice, Robert Edgar; Fraser, Alexander Yule (eds.). "La Tour d'Hanoï". Proceedings of the Edinburgh Mathematical Society (in English and French). Edinburgh Mathematical Society. 2 (5): 50–53. doi:10.1017/S0013091500037147. eISSN 1464-3839. ISSN 0013-0915. S2CID 122159381. (4페이지)
  30. ^ Lucas, Édouard (1979) [1892]. Récréations mathématiques (in French). Vol. 3 (Librairie Albert Blanchard reissue ed.). p. 58. (이 책의 초판은 사후에 출판되었습니다.)
  31. ^ a b [4]Herter, Felix; Rote, Günter (2018-11-14) [2018-08-09, 2017-12, 2017-08-09, 2016-04-22]. "Loopless Gray Code Enumeration and the Tower of Bucharest" (PDF). Theoretical Computer Science. Berlin, Germany. 748: 40–54. arXiv:1604.06707. doi:10.1016/j.tcs.2017.11.017. ISSN 0304-3975. S2CID 4014870. Archived (PDF) from the original on 2020-12-16. Retrieved 2020-12-16. (15/18/19/24페이지)
  32. ^ Gardner, Martin (August 1972). "The curious properties of the Gray code and how it can be used to solve puzzles". Scientific American. Mathematical Games. Vol. 227, no. 2. p. 106. (1페이지)
  33. ^ Zeman, Johann; Fischer, Ferdinand, eds. (1877). "Einige neuere Vorschläge zur mehrfachen Telegraphie: A. Absatzweise vielfache Telegraphie". Dingler's Polytechnisches Journal (in German). Augsburg, Germany: J. G. Cotta'sche Buchhandlung. 226: 499–507. Archived from the original on 2020-12-21. Retrieved 2020-12-21. p. 499: […] Der um die Mitte des J[ahres] 1874 patenti[e]rte, ebenfalls dem Highton'schen verwandte Typendrucker des französischen Telegraphen-Verwaltungsbeamten Baudot wurde bei seiner 1875 patenti[e]rten Weiterentwicklung in einen fünffachen umgewandelt […]
  34. ^ Butrica, Andrew J. (1991-06-21). "Baudot, Jean Maurice Emile". In Froehlich, Fritz E.; Kent, Allen; Hall, Carolyn M. (eds.). The Froehlich/Kent Encyclopedia of Telecommunications: Volume 2 - Batteries to Codes-Telecommunications. Vol. 2. Marcel Dekker Inc. / CRC Press. pp. 31–34. ISBN 0-8247-2901-3. LCCN 90-3966. Retrieved 2020-12-20. p. 31: […] A Baudot prototype (4 years in the making) was built in 1876. The transmitter had 5 keys similar to those of a piano. Messages were sent in a special 5-element code devised by Baudot […]
  35. ^ Fischer, Eric N. (2000-06-20). "The Evolution of Character Codes, 1874–1968". ark:/13960/t07x23w8s. Retrieved 2020-12-20. […] In 1872, [Baudot] started research toward a telegraph system that would allow multiple operators to transmit simultaneously over a single wire and, as the transmissions were received, would print them in ordinary alphabetic characters on a strip of paper. He received a patent for such a system on June 17, 1874. […] Instead of a variable delay followed by a single-unit pulse, Baudot's system used a uniform six time units to transmit each character. […] his early telegraph probably used the six-unit code […] that he attributes to Davy in an 1877 article. […] in 1876 Baudot redesigned his equipment to use a five-unit code. Punctuation and digits were still sometimes needed, though, so he adopted from Hughes the use of two special letter space and figure space characters that would cause the printer to shift between cases at the same time as it advanced the paper without printing. The five-unit code he began using at this time […] was structured to suit his keyboard […], which controlled two units of each character with switches operated by the left hand and the other three units with the right hand. […] [5][6]
  36. ^ Rothen, Timotheus (1884-12-25). "Le télégraphe imprimeur Baudot". Journal Télégraphique (in French). Berne, Switzerland: Le Bureau International des Administrations Télégraphiques. VIII / #16 (12): 241–253 [249]. eISSN 2725-738X. ISSN 2223-1420. ark:/12148/bpt6k5725454q. Archived from the original on 2020-12-21. Retrieved 2020-12-20.
  37. ^ Pendry, Henry Walter (1920) [October 1919]. Written at London, UK. The Baudôt Printing Telegraph System (2 ed.). London, Bath, Melbourne, New York: Sir Isaac Pitman and Sons, Ltd. pp. 43–44. LCCN 21005277. OCLC 778309351. OL 6633244M. Retrieved 2020-12-20. (vii+184쪽) (NB. 1913년 초판 발행)
  38. ^ a b MacMillan, David M. (2010-04-27) [2010-04-25, 2010-04-23]. "Codes that Don't Count - Some Printing Telegraph Codes as Products of their Technologies (With Particular Attention to the Teletypesetter)". lemur.com. Revision 3. Mineral Point, Wisconsin, USA. Archived from the original on 2020-12-18. Retrieved 2020-12-20.
  39. ^ Written at Lisbon, Portugual. Convention télégraphique internationale de Saint-Pétersbourg et Règlement et tarifs y annexés, Revision de Lisbonne, 1908 / Extraits de la publication: Documents de la Conférence télégraphique internationale de Lisbonne (in French). Berne, Switzerland: Bureau Internationale de L'Union Télégraphique. 1909 [1908].
  40. ^ "Chapter IX. Signaux de transmission, Article 35. Signaux de transmission des alphabets télegraphiques internationaux 'nos 1 et 2, signaux d.u code Morse, de l'appareil Hughes et de l'appareil Siemens". Written at Madrid, Spain. Règlement télégraphique annexé à la convention internationale des télécommunications - protocol finale audit règlement - Madrid, 1932 (PDF) (in French). Berne, Switzerland: Bureau Internationale de L'Union Télégraphique. 1933 [1932]. pp. 31–40 [33]. Archived (PDF) from the original on 2020-12-21. Retrieved 2020-12-21. (1+188페이지) [7]
  41. ^ "Chapter IX. Transmission Signals. Article 35. Transmission Signals of the International Telegraph Alphabets Nos. 1 and 2, Morse Code Signals and Signals of the Hughes and Siemens Instruments.". Telegraph Regulations Annexed To The International Telecommunication Convention - Final Protocol To The Telegraph Regulations - Madrid 1932 (PDF) (in English and French). London, UK: General Post Office / His Majesty's Stationery Office. 1933 [1932]. pp. 32–40 [34]. 43-152-2 / 18693. Archived (PDF) from the original on 2020-12-21. Retrieved 2020-12-21. (1+2*120+26페이지) [8]
  42. ^ Zemanek, Heinrich "Heinz" Josef (1983-12-01). Otto Schäffler (1838-1928). Pionier des Telephons, der Telegraphie und der Lochkarte sowie Erbauer der ersten Wiener Telephonzentrale. Blätter für Technikgeschichte (in German and English). Vol. 41–43 (1979–1981) (1 ed.). Vienna, Austria: Technisches Museum für Industrie und Gewerbe, Forschungsinstitut für Technikgeschichte / Springer-Verlag. pp. 81–118. ISBN 3-21181779-4. ISSN 0067-9127. OCLC 952698275.
  43. ^ Zemanek, Heinrich "Heinz" Josef (1976-06-07). "Computer prehistory and history in central Europe". Written at Vienna, Austria. International Workshop on Managing Requirements Knowledge. AFIPS '76: Proceedings of the June 7–10, 1976, national computer conference and exposition June 1976. Vol. 1. New York, USA: American Federation of Information Processing Societies, Association for Computing Machinery. pp. 15–20. doi:10.1145/1499799.1499803. ISBN 978-1-4503-7917-5. S2CID 14114959. Archived from the original on 2020-12-17. Retrieved 2020-12-17. p. 17: […] In 1874, Schaeffler [de] invented another printing telegraph, a quadruple system like the Baudot, but mechanically more sophisticated. The Hughes telegraph had two synchronously rotating fingers, one in the sender and one in the receiver. By a piano-like keyboard the operator selected a letter and thereby made contact with the rotating finger in the corresponding direction. Since the receiving finger was in the same direction at this moment, the receiver could print the correct letter. The Baudot and the Schaeffler printing telegraphs use a five-bit binary code. ... Schaeffler's code is a reflected binary code! What F. Gray patented in 1953 for PCM, Schaeffler had applied in his telegraph in 1874, and for a similar reason: reliability. He had contact fingers sensing on five cams consecutively all combinations; the right one triggers printing. If the fingers are to make a minimal number of movements, the solution is the reflected binary code. For Schaeffler, this idea was a minor one. More exactly, the code is described in a letter by the Austrian Post employee, J[ohann] N[epomuk] Teufelhart, inserted there as a footnote and telling that Schaeffler found the code by combining wooden bars with the different combinations until he had the best solution. Another Post employee, Alexander Wilhelm Lambert of Linz, claims to have shown this code to Schaeffler as early as 1872, but this claim is not clear and cannot be checked. […] (6페이지)
  44. ^ Goodall, William M. (January 1951). "Television by Pulse Code Modulation". Bell System Technical Journal. 30 (1): 33–49. doi:10.1002/j.1538-7305.1951.tb01365.x. (NB. 1949년 3월 뉴욕시에서 열린 I.R.E. 전당대회 전에 구두로 발표)
  45. ^ Karnaugh, Maurice (November 1953) [1953-04-23, 1953-03-17]. "The Map Method for Synthesis of Combinational Logic Circuits" (PDF). Transactions of the American Institute of Electrical Engineers, Part I: Communication and Electronics. 72 (5): 593–599. doi:10.1109/TCE.1953.6371932. S2CID 51636736. Paper 53-217. Archived from the original (PDF) on 2017-04-16. Retrieved 2017-04-16. (NB. Samuel H. Caldwell의 짧은 리뷰도 포함되어 있습니다.)
  46. ^ Wakerly, John F. (1994). Digital Design: Principles & Practices. New Jersey, USA: Prentice Hall. pp. 48–49, 222. ISBN 0-13-211459-3. (NB. 두 페이지의 섹션을 종합하면 K-맵에 회색 코드가 표시되어 있습니다.첫 번째 섹션은 항목 간에 한 비트만 변경되는 코드로 레이블이 지정되어 있다고 말하고 두 번째 섹션은 그러한 코드를 그레이 코드라고 합니다.)
  47. ^ (xii+291+3페이지) 초판
  48. ^ Händler, Wolfgang (1958). Ein Minimisierungsverfahren zur Synthese von Schaltkreisen (Minimisierungsgraphen) (Dissertation) (in German). Potsdam, Germany: Technische Hochschule Darmstadt. D 17. (73페이지+앱) [9]
  49. ^ Berger, Erich R.; Händler, Wolfgang (1967) [1962]. Steinbuch, Karl W.; Wagner, Siegfried W. (eds.). Taschenbuch der Nachrichtenverarbeitung (in German) (2 ed.). Berlin, Germany: Springer-Verlag OHG. pp. 64, 1034–1035, 1036, 1038. LCCN 67-21079. Title No. 1036. p. 64: […] Übersichtlich ist die Darstellung nach Händler, die sämtliche Punkte, numeriert nach dem Gray-Code […], auf dem Umfeld eines Kreises anordnet. Sie erfordert allerdings sehr viel Platz. […] [Händler's diagram, where all points, numbered according to the Gray code, are arranged on the circumference of a circle, is easily comprehensible. It needs, however, a lot of space.]
  50. ^ "Informatik Sammlung Erlangen (ISER)" (in German). Erlangen, Germany: Friedrich-Alexander Universität. 2012-03-13. Archived from the original on 2017-05-16. Retrieved 2017-04-12.
  51. ^ "Informatik Sammlung Erlangen (ISER) – Impressum" (in German). Erlangen, Germany: Friedrich-Alexander Universität. 2012-03-13. Archived from the original on 2012-02-26. Retrieved 2017-04-15.
  52. ^ a b c d e Bhat, Girish S.; Savage, Carla Diane (1996). "Balanced Gray Codes". Electronic Journal of Combinatorics. 3 (1). doi:10.37236/1249.
  53. ^ Donohue, Ryan (2003). "Synchronization in Digital Logic Circuits" (PDF). Archived (PDF) from the original on 2018-01-15. Retrieved 2018-01-15.
  54. ^ Hulst, George D. (1962-02-06) [1957-11-15]. Reflected binary code counter (PDF). Nutley, New Jersey, USA: International Telephone and Telegraph Corporation (ITT). U.S. Patent 3,020,481. Serial No. 696793. Archived (PDF) from the original on 2020-08-06. Retrieved 2020-08-06. (5페이지)
  55. ^ a b c d Powell, E. Alexander (June 1968). "Codes particularly useful for analogue to digital conversions". A short note on useful codes for Fluidic Control Circuits (PDF). Cranfield, UK: The College of Aeronautics, Department of Production Engineering. pp. 7, 9. S2CID 215864694. CoA Memo 156. Archived (PDF) from the original on 2020-12-15. Retrieved 2020-12-15. (18페이지) (NB).이 논문은 글릭슨 코드가 그레이 코드를 변형한 것을 이름짓고 리처드 해밍의 이름을 잘못 쓴 것입니다.)
  56. ^ Mehta, Huzefa; Owens, Robert Michael; Irwin, Mary Jane "Janie" (1996-03-22). "Some issues in gray code addressing". Proceedings of the Sixth Great Lakes Symposium on VLSI. IEEE Computer Society. pp. 178–181. doi:10.1109/GLSV.1996.497616. ISBN 978-0-8186-7502-7. ISSN 1066-1395. S2CID 52837310.
  57. ^ a b Doran, Robert "Bob" William (March 2007). The Gray Code (PDF). CDMTCS Research Report Series. Centre for Discrete Mathematics and Theoretical Computer Science, University of Auckland, New Zealand. CDMTCS-304. Archived (PDF) from the original on 2020-05-22. Retrieved 2020-05-23. (25페이지)
  58. ^ Su, Ching-Long; Tsui, Chi-Ying; Despain, Alvin M. (1994). Low Power Architecture Design and Compilation Techniques for High-Performance Processors (PDF) (Report). Advanced Computer Architecture Laboratory. ACAL-TR-94-01. Archived (PDF) from the original on 2020-07-26. Retrieved 2020-12-17.
  59. ^ Guo, Hui; Parameswaran, Sri (April–June 2010). "Shifted Gray encoding to reduce instruction memory address bus switching for low-power embedded systems". Journal of Systems Architecture. 56 (4–6): 180–190. doi:10.1016/j.sysarc.2010.03.003.
  60. ^ Dietz, Henry Gordon "Hank" (2002). "The Aggregate Magic Algorithms: Gray Code Conversion". The Aggregate. Electrical and Computer Engineering Department, College of Engineering, University of Kentucky. Archived from the original on 2020-12-16. Retrieved 2020-12-16.
  61. ^ Maxfield, Max (2007-06-29). "How to generate Gray Codes for non-power-of-2 sequences". Archived from the original on 2022-01-29. Retrieved 2022-01-29.
  62. ^ (OEIS의 시퀀스 A290772)
  63. ^ a b Guan, Dah-Jyh (1998). "Generalized Gray Codes with Applications". Proceedings of the National Scientific Council, Republic of China, Part A. 22: 841–848. CiteSeerX 10.1.1.119.1344.
  64. ^ D. G. Wagner, J. West (1991). "Construction of Uniform Gray Codes". Congressus Numerantium. 80: 217–223.
  65. ^ a b Suparta, I. Nengah (2005). "A simple proof for the existence of exponentially balanced Gray codes". Electronic Journal of Combinatorics. 12. doi:10.37236/1986.
  66. ^ a b Flahive, Mary Elizabeth; Bose, Bella (2007). "Balancing cyclic R-ary Gray codes". Electronic Journal of Combinatorics. 14. doi:10.37236/949.
  67. ^ Strackx, Raoul; Piessens, Frank (2016). "Ariadne: A Minimal Approach to State Continuity". Usenix Security. 25.
  68. ^ Savage, Carla Diane (1997). "A Survey of Combinatorial Gray Codes". SIAM Review. Society for Industrial and Applied Mathematics (SIAM). 39 (4): 605–629. Bibcode:1997SIAMR..39..605S. CiteSeerX 10.1.1.39.1924. doi:10.1137/S0036144595295272. JSTOR 2132693. S2CID 6375360.
  69. ^ a b Savage, Carla Diane; Winkler, Peter (1995). "Monotone Gray codes and the middle levels problem". Journal of Combinatorial Theory. Series A. 70 (2): 230–248. doi:10.1016/0097-3165(95)90091-8. ISSN 0097-3165.
  70. ^ Savage, Carla Diane (1997-01-16). "Long cycles in the middle two levels of the Boolean lattice". Ars Combinatoria. North Carolina State University, Raleigh, North Carolina, USA. 35 (A): 97–108. CiteSeerX 10.1.1.39.2249. ISSN 0381-7032. S2CID 15975960. Archived from the original on 2020-05-13. Retrieved 2020-05-13. (15페이지)
  71. ^ a b Goddyn, Luis (1999). "MATH 343 Applied Discrete Math Supplementary Materials" (PDF). Department of Mathematics, Simon Fraser University. Archived from the original (PDF) on 2015-02-17.
  72. ^ Sawada, Joseph "Joe"; Wong, Dennis Chi-Him (2007). "A Fast Algorithm to generate Beckett–Gray codes". Electronic Notes in Discrete Mathematics. 29: 571–577. doi:10.1016/j.endm.2007.07.091.
  73. ^ Richards, Richard Kohler (January 1971). "Snake-in-the-Box Codes". Written at Ames, Iowa, USA. Digital Design. New York, USA: Wiley-Interscience, John Wiley & Sons, Inc. pp. 206–207. ISBN 0-471-71945-5. LCCN 73-147235. (12+577+1페이지)
  74. ^ a b NZ 264738, Spedding, Norman Bruce, "A position encoder", 1994-10-28 출판 [무제한 검증]
  75. ^ Spedding, Norman Bruce (1994-10-28). "The following is a copy of the provisional patent filed on behalf of Industrial Research Limited on 1994-10-28 – NZ Patent 264738" (PDF). Industrial Research Limited. NZ Patent 264738. Archived (PDF) from the original on 2017-10-29. Retrieved 2018-01-14.
  76. ^ Hiltgen, Alain P.; Paterson, Kenneth G.; Brandestini, Marco (September 1996). "Single-Track Gray Codes" (PDF). IEEE Transactions on Information Theory. 42 (5): 1555–1561. doi:10.1109/18.532900. Zbl 857.94007.
  77. ^ Hiltgen, Alain P.; Paterson, Kenneth G. (September 2001). "Single-Track Circuit Codes" (PDF). IEEE Transactions on Information Theory. 47 (6): 2587–2595. CiteSeerX 10.1.1.10.8218. doi:10.1109/18.945274. Archived (PDF) from the original on 2018-01-15. Retrieved 2018-01-15.
  78. ^ Etzion, Tuvi; Schwartz, Moshe (November 1999) [1998-05-17]. "The Structure of Single-Track Gray Codes" (PDF). IEEE Transactions on Information Theory. IT-45 (7): 2383–2396. CiteSeerX 10.1.1.14.8333. doi:10.1109/18.796379. Archived (PDF) from the original on 2018-01-15. Retrieved 2018-01-15. 기술 보고서 CS0937 Wayback Machine에서 2018-12-15 아카이브
  79. ^ Sillke, Torsten (1997) [1993-03-01]. "Gray-Codes with few tracks (a question of Marco Brandestini)". Archived from the original on 2017-10-29. Retrieved 2017-10-29.
  80. ^ a b Etzion, Tuvi; Paterson, Kenneth G. (May 1996). "Near Optimal Single-Track Gray Codes" (PDF). IEEE Transactions on Information Theory. IT-42 (3): 779–789. CiteSeerX 10.1.1.14.1527. doi:10.1109/18.490544. Archived (PDF) from the original on 2016-10-30. Retrieved 2018-04-08.
  81. ^ Ruskey, Frank; Weston, Mark (2005-06-18). "A Survey of Venn Diagrams: Symmetric Diagrams". Dynamic Surveys. Electronic Journal of Combinatorics. doi:10.37236/26.
  82. ^ Alciatore, David G.; Histand, Michael B. (1999). Mechatronics. McGraw–Hill Education – Europe. ISBN 978-0-07-131444-2.
  83. ^ Williams, Gary. "'single track gray code' sought for encoding 360 degrees with 9 sensors". Experts Exchange.
  84. ^ Bauer, Florian. "9-Bit Absolute Singletrack Gray Code Rotary Encoder". Thingiverse.
  85. ^ Krishna (2008-05-11). "Gray code for QAM". Archived from the original on 2017-10-29. Retrieved 2017-10-29.
  86. ^ Strang, Thomas; Dammann, Armin; Röckl, Matthias; Plass, Simon (October 2009). Using Gray codes as Location Identifiers (PDF). 6. GI/ITG KuVS Fachgespräch Ortsbezogene Anwendungen und Dienste (in English and German). Oberpfaffenhofen, Germany: Institute of Communications and Navigation, German Aerospace Center (DLR). CiteSeerX 10.1.1.398.9164. Archived (PDF) from the original on 2015-05-01. Retrieved 2020-12-16. (5/8페이지) [10]
  87. ^ Greferath, Marcus (2009). "An Introduction to Ring-Linear Coding Theory". In Sala, Massimiliano; Mora, Teo; Perret, Ludovic; Sakata, Shojiro; Traverso, Carlo (eds.). Gröbner Bases, Coding, and Cryptography. Springer Science & Business Media. p. 220. ISBN 978-3-540-93806-4.
  88. ^ Solé, Patrick (2016-04-17). Hazewinkel, Michiel (ed.). Kerdock and Preparata codes. ISBN 978-1-4020-0609-8. Archived from the original on 2017-10-29. Retrieved 2017-10-29. {{cite book}}: work=무시됨(도움말)
  89. ^ Spaulding, Carl P. (1965-07-12). How to Use Shaft Encoders. Monrovia, California, USA: Datex Corporation. (85페이지)
  90. ^ a b Wheeler, Edwin L. (1969-12-30) [1968-04-05]. Analog to digital encoder (PDF). New York, USA: Conrac Corporation. U.S. Patent 3487460A. Serial No. 719026 (397812). Archived (PDF) from the original on 2020-08-05. Retrieved 2018-01-21. p. 5, left column 9, rows 15–22: […] The MOA-GILLHAM code is essentially the combination of the Gray code discussed thereinabove and the well known Datex code; the Datex code is disclosed in U.S. Patent 3,165,731. The arrangement is such that the Datex code defines the bits for the units count of the encoder and the Gray code defines the bits for each of the higher order decades, the tens, hundreds, etc. […] (11페이지)
  91. ^ a b c d e f Dokter, Folkert; Steinhauer, Jürgen (1973-06-18). "2.4. Coding numbers in the binary system". Digital Electronics. Philips Technical Library (PTL) / Macmillan Education (Reprint of 1st English ed.). Eindhoven, Netherlands: The Macmillan Press Ltd. / N. V. Philips' Gloeilampenfabrieken. pp. 32, 39, 50–53. doi:10.1007/978-1-349-01417-0. ISBN 978-1-349-01419-4. SBN 333-13360-9. Retrieved 2020-05-11. p. 53: […] The Datex code […] uses the O'Brien code II within each decade, and reflected decimal numbers for the decimal transitions. For further processing, code conversion to the natural decimal notation is necessary. Since the O'Brien II code forms a 9s complement, this does not give rise to particular difficulties: whenever the code word for the tens represents an odd number, the code words for the decimal units are given as the 9s complements by inversion of the fourth binary digit. […][permanent dead link] (270페이지)
  92. ^ a b c d e (xii+327+3페이지)
  93. ^ "…accurate liquid level metering – at ANY DISTANCE!". Petroleum Refiner (Advertisement). Gulf Publishing Company. 33 (9): 368. September 1954. ISSN 0096-6517. p. 368: […] The complete dispatching operation, gauging, and remote control is integrated into one single unitized system when a "Varec" Pulse Code Telemetering System is installed. […]
  94. ^ Bishup, Bernard W.; Repeta, Anthony A.; Giarrizzo, Frank C. (1968-08-13) [1963-04-03]. "Telemetering and supervisory control system having normally continuous telemetering signals". Leeds and Northrup Co. US3397386A. [11]
  95. ^ "Encoder Pulse Format". Installation and Operations Manual for the Model 1900 Micro 4-Wire Transmitter (PDF). Cypress, California, USA: Whessoe Varec, Inc. January 1993 [1991-07-01]. pp. 04-4–04-8. 33-08461. Archived (PDF) from the original on 2020-05-16. Retrieved 2020-05-16. (38페이지) (NB. 04-8페이지의 "인치"에 대한 5번 위치는 "1111"이 아닌 "0111"로 읽어야 함)
  96. ^ "2.2.3.3 MSP Level Data Format". Varec Model 1900 – Micro 4-Wire Transmitter (BSAP to Mark / Space Protocol (MSP)) – Application Notes (PDF). Emerson Electric. pp. 11–14. Archived (PDF) from the original on 2020-05-16. Retrieved 2020-05-16. (vi+33페이지)
  97. ^ a b c Wightman, Eric Jeffrey (1972). "Chapter 6. Displacement measurement". Instrumentation in Process Control (1 ed.). London, UK: Butterworth & Co (Publishers) Ltd. pp. 122–123. ISBN 0-408-70293-1. p. 122–123: […] Other forms of code are also well known. Among these are the Royal Radar Establishment code; The Excess Three decimal code; Gillham code which is recommended by ICAO for automatic height transmission for air traffic control purposes; the Petherick code, and the Leslie and Russell code of the National Engineering Laboratory. Each has its particular merits and they are offered as options by various encoder manufacturers. […] (12+367+5페이지)
  98. ^ Phillips, Darryl (2012-07-26) [1998]. "Altitude – MODEC ASCII". AirSport Avionics. Archived from the original on 2012-07-26.
  99. ^ Stewart, K. (2010-12-03). "Aviation Gray Code: Gillham Code Explained". Custom Computer Services (CCS). Archived from the original on 2018-01-16. Retrieved 2018-01-14.
  100. ^ Leslie, William "Bill" H. P.; Russell, A. (1964). A cyclic progressive decimal code for simple translation to decimal and analogue outputs (Report). East Kilbride, Glasgow, UK: National Engineering Laboratory. NEL Report 129. (17페이지)
  101. ^ Leslie, William "Bill" H. P. (1974). "The work on NC at NEL". In Koenigsberger, Franz; Tobias, Stephen Albert (eds.). Proceedings of the Fourteenth International Machine Tool Design and Research Conference, 12–14 September 1973. The Macmillan Press Ltd. pp. 215–224 [215, 217]. doi:10.1007/978-1-349-01921-2_30. ISBN 978-1-34901921-2. LCCN 73-16545. SBN 333-14913-0. Archived from the original on 2022-04-07. Retrieved 2020-05-21.
  102. ^ Hoklas, Archibald (1989-09-06) [1988-04-29]. "Abtastvorrichtung zur digitalen Weg- oder Winkelmessung" (PDF) (in German). VEB Schiffselektronik Johannes Warnke [de]. GDR Patent DD271603A1. WP H 03 M / 315 194 8. Archived from the original (PDF) on 2018-01-18. Retrieved 2018-01-18 – via DEPATIS [de]. [12] [13]
  103. ^ a b c d e f g h i j k Hoklas, Archibald (2005). "Gray code – Unit distance code". Archived from the original on 2018-01-15. Retrieved 2018-01-15.
  104. ^ a b c d e Hoklas, Archibald (2005). "Gray-Kode – Einschrittiger Abtastkode" (in German). Archived from the original on 2018-01-15. Retrieved 2018-01-15.
  105. ^ Petherick, Edward John; Hopkins, A. J. (1958). Some Recently Developed Digital Devices for Encoding the Rotations of Shafts (Technical Note MS21). Farnborough, UK: Royal Aircraft Establishment (RAE).
  106. ^ "Digitizer als Analog-Digital-Wandler in der Steuer-, Meß- und Regeltechnik" (PDF). Technische Mitteilungen. Relais, elektronische Geräte, Steuerungen (in German). No. 13. Cologne-Niehl, Germany: Franz Baumgartner (FraBa). May 1963. pp. 1–2. Archived from the original (PDF) on 2020-05-21. Retrieved 2020-05-21. pp. 1–2: […] Die Firma Harrison Reproduction Equipment, Farnborough/England […] hat in jahrelanger Entwicklung in Zusammenarbeit mit der Britischen Luftwaffe und britischen Industriebetrieben den mechanischen Digitizer […] zu einer technischen Reife gebracht, die fast allen Anforderungen […] genügt. […] Um bei der dezimalen Entschlüsselung des verwendeten Binärcodes zu eindeutigen und bei der Übergabe von einer Dezimalstelle zur anderen in der Reihenfolge immer richtigen Ergebnissen zu kommen, wurde ein spezieller Code entwickelt, der jede Möglichkeit einer Fehlaussage durch sein Prinzip ausschließt und der außerdem durch seinen Aufbau eine relativ einfache Entschlüsselung erlaubt. Der Code basiert auf dem Petherick-Code. […] (4페이지)
  107. ^ a b Charnley, C. J.; Bidgood, R. E.; Boardman, G. E. T. (October 1965). "The Design of a Pneumatic Position Encoder" (PDF). IFAC Proceedings Volumes. The College of Aeronautics, Cranfield, Bedford, England. 2 (3): 75–88. doi:10.1016/S1474-6670(17)68955-9. Chapter 1.5. Retrieved 2018-01-14.
  108. ^ Hollingdale, Stuart H. (1958-09-19). "Session 14. Data Processing". Applications of Computers. Archived from the original on 2020-05-25. Retrieved 2020-05-25. {{cite book}}: work=무시됨(도움말)
  109. ^ a b c O'Brien, Joseph A. (May 1956) [1955-11-15, 1955-06-23]. "Cyclic Decimal Codes for Analogue to Digital Converters". Transactions of the American Institute of Electrical Engineers, Part I: Communication and Electronics. Bell Telephone Laboratories, Whippany, New Jersey, USA. 75 (2): 120–122. doi:10.1109/TCE.1956.6372498. ISSN 0097-2452. S2CID 51657314. Paper 56-21. Retrieved 2020-05-18. (3페이지) (NB).본 논문은 1956-01-30~1956-02-03 미국 뉴욕 AIEE Winter General Meeting에서 발표를 위해 준비되었습니다.)
  110. ^ a b c d e f g h i Steinbuch, Karl W., ed. (1962). Written at Karlsruhe, Germany. Taschenbuch der Nachrichtenverarbeitung (in German) (1 ed.). Berlin / Göttingen / New York: Springer-Verlag OHG. pp. 71–74, 97, 761–764, 770, 1080–1081. LCCN 62-14511.
  111. ^ a b c d e f g h i Steinbuch, Karl W.; Weber, Wolfgang; Heinemann, Traute, eds. (1974) [1967]. Taschenbuch der Informatik – Band II – Struktur und Programmierung von EDV-Systemen. pp. 98–100. ISBN 3-540-06241-6. LCCN 73-80607. {{cite book}}: work=무시됨(도움말)
  112. ^ Foss, Frederic A. (1960-12-27) [1954-12-17]. "Control Systems" (PDF). International Business Machines Corp. Fig. 7, Fig. 8, Fig. 11. U.S. Patent 2966670A. Serial No. 475945. Archived (PDF) from the original on 2020-06-21. Retrieved 2020-08-05. (14페이지) (NB).저자는 자신의 코드를 2*-4-2-1(+9-±7-±3-±1)이라고 불렀고 십진법 코드를 반영했습니다.)
  113. ^ Foss, Frederic A. (December 1954). "The Use of a Reflected Code in Digital Control Systems". IRE Transactions on Electronic Computers. EC-3 (4): 1–6. doi:10.1109/IREPGELC.1954.6499244. ISSN 2168-1740. (6페이지)
  114. ^ : Evans, David Silvester (1958). "[unknown]". Transactions. Institute of Measurement and Control. 10–12: 87. {{cite journal}}Cite는 일반적인 제목(도움말)(NB)을 사용합니다.Watts 코드는 Hilger & Watts Ltd.에서 사용되는 다른 코드와 구별하기 위해 W.R.D 코드 또는 Watts Reflected Decimal이라고 불렸습니다.)
  115. ^ Benjamin, P. W.; Nicholls, G. S. (1963). "3.2.2 Electromechanical Digitizers". Measurement of Neutron Spectra by Semi-Automatic Scanning of Recoil Protons in Photographic Emulsions. United Kingdom Atomic Energy Authority, Atomic Weapons Research Establishment, UK: U.S. Department of Energy. pp. 8–10, 19. AWRE Report No. NR 5/63. [14] (23페이지)
  116. ^ Klinkowski, James J. (1967-03-14) [1964-03-23]. "Electronic Diode Matrix Decoder Circuits" (PDF). Detroit, Michigan, USA: Burroughs Corporation. U.S. Patent 3309695A. Serial No. 353845. Archived (PDF) from the original on 2020-05-23. Retrieved 2020-05-23. (5페이지) [15]
  117. ^ Klinkowski, James J. (1970-03-31) [1966-12-22]. "Binary-coded decimal signal converter" (PDF). Detroit, Michigan, USA: Burroughs Corporation. U.S. Patent 3504363A. Serial No. 603926. Archived (PDF) from the original on 2020-05-23. Retrieved 2020-05-23. (7페이지)
  118. ^ "[unknown]". Electrical Design News. Rogers Publishing Company. 12. 1967. ISSN 0012-7515. {{cite journal}}:인용은 일반 제목(도움말)을 사용합니다. [16][17]
  119. ^ Tóth-Zentai, Györgyi (1979-10-05). "Some Problems Of Angular Rotational Digital Converters". Periodica Polytechnica Electrical Engineering. Department of Electronics Technology, Technical University, Budapest, Hungary. 23 (3–4): 265–270 [266]. Retrieved 2020-05-23. [18] (6페이지) (NB. 6자리 Watts 코드를 보여줍니다.
  120. ^ Savard, John J. G. (2018) [2006]. "Decimal Representations". quadibloc. Archived from the original on 2018-07-16. Retrieved 2018-07-16.
  121. ^ a b Turvey, Jr., Frank P. (1958-07-29) [1956-05-17]. "Pulse-Count Coder" (PDF). Nutley, New Jersey, USA: International Telephone and Telegraph Corporation. U.S. Patent 2845617A. Serial No. 585494. Archived (PDF) from the original on 2020-05-23. Retrieved 2020-05-23. (5페이지)
  122. ^ a b Glixon, Harry Robert (March 1957). "Can You Take Advantage of the Cyclic Binary-Decimal Code?". Control Engineering. Technical Publishing Company, a division of Dun-Donnelley Publishing Corporation, Dun & Bradstreet Corp. 4 (3): 87–91. ISSN 0010-8049. (5페이지)
  123. ^ a b Borucki, Lorenz; Dittmann, Joachim (1971) [July 1970, 1966, Autumn 1965]. "2.3 Gebräuchliche Codes in der digitalen Meßtechnik". Written at Krefeld / Karlsruhe, Germany. Digitale Meßtechnik: Eine Einführung (in German) (2 ed.). Berlin / Heidelberg, Germany: Springer-Verlag. pp. 10–23 [12–14]. doi:10.1007/978-3-642-80560-8. ISBN 3-540-05058-2. LCCN 75-131547. ISBN 978-3-642-80561-5. (viii+252쪽) 초판 (NB)Kämmerer와 마찬가지로, 저자들은 6비트 20 사이클 글리슨 코드를 설명합니다.)
  124. ^ a b Kämmerer, Wilhelm [in German] (May 1969). "II.15. Struktur: Informationsdarstellung im Automaten". Written at Jena, Germany. In Frühauf, Hans [in German]; Kämmerer, Wilhelm; Schröder, Kurz; Winkler, Helmut (eds.). Digitale Automaten – Theorie, Struktur, Technik, Programmieren. Elektronisches Rechnen und Regeln (in German). Vol. 5 (1 ed.). Berlin, Germany: Akademie-Verlag GmbH. p. 173. License no. 202-100/416/69. Order no. 4666 ES 20 K 3. (NB. 1973년 2판도 존재합니다.보루키나 디트만처럼, 그러나 글릭슨 코드라고 명명하지 않고, 저자는 글릭슨 코드로부터 20 사이클 4차 코드를 만들고, 고차 비트가 반전된 글릭슨 코드 변형을 만듭니다.)
  125. ^ Paul, Matthias R. (1995-08-10) [1994]. "Unterbrechungsfreier Schleifencode" [Continuous loop code]. 1.02 (in German). Retrieved 2008-02-11. (NB. 저자는 이 코드를 Schleifencode(영어: "루프 코드")라고 불렀습니다.회색 BCD 코드는 상태 0의 인코딩에서만 차이가 있어 전체 원형 회전 응용을 위한 순환 단위 거리 코드로 만듭니다.올제로 코드 패턴을 피하면 루프 자체 테스트가 가능하고 중단 없는 전원 분배를 위해 데이터 라인을 사용할 수 있습니다.)
  126. ^ Klar, Rainer (1970-02-01). Digitale Rechenautomaten – Eine Einführung [Digital Computers – An Introduction]. Sammlung Göschen (in German). Vol. 1241/1241a (1 ed.). Berlin, Germany: Walter de Gruyter & Co. / G. J. Göschen'sche Verlagsbuchhandlung [de]. p. 17. ISBN 3-11-083160-0. . Archiv-Nr. 7990709. Archived from the original on 2020-06-01. Retrieved 2020-04-13. (205페이지) (NB. ISBN 3-11002793-3, 978-3-11002793-8의거하여 2019년 초판 재인쇄가 가능합니다.재작업 및 확장된 4판도 존재합니다.)
  127. ^ Klar, Rainer (1989) [1988-10-01]. Digitale Rechenautomaten – Eine Einführung in die Struktur von Computerhardware [Digital Computers – An Introduction into the structure of computer hardware]. Sammlung Göschen (in German). Vol. 2050 (4th reworked ed.). Berlin, Germany: Walter de Gruyter & Co. p. 28. ISBN 3-11011700-2. (320페이지) (NB.저자는 이 코드를 Einheitsabands 코드(영어: "단위 거리 코드")라고 불렀습니다.2개의 비트열을 스왑하고 그 중 하나를 반전시키면 오브라이언 코드 II로 전달할 수 있고, 2개의 비트열을 스왑하고 반전시키면 피터릭 코드로 전달할 수 있습니다.)

추가열람

외부 링크