>  기사  >  백엔드 개발  >  그레이 코드에 해당하는 십진수와 그 역순

그레이 코드에 해당하는 십진수와 그 역순

WBOY
WBOY앞으로
2023-09-07 18:33:021431검색

그레이 코드에 해당하는 십진수와 그 역순

회색 코드 또는 반영된 이진 코드는 두 개의 연속 숫자가 1비트만 다른 숫자를 이진 표현으로 표현한 것입니다.

예를 들어 1의 그레이 코드는 001이고, 2의 그레이 코드는 011입니다.

회색 코드는 상태가 변경될 때 일반적인 이진 표현에서 발생할 수 있는 일부 데이터 오류를 방지하기 때문에 오류 수정에 자주 사용됩니다.

그레이코드는 독특한 특성으로 인해 k-map, 커뮤니케이션 등에 도움이 됩니다.

전제조건

더 읽기 전에 십진수, 이진수 및 그레이 코드 표기법을 공부하세요.

문제 설명 1

십진수 n이 주어졌을 때, 그 숫자의 십진수 형태의 그레이 코드를 찾으세요.

으아악

설명 -> 3의 이진 표현은 011입니다. 그레이 코드 표현은 010입니다. 010의 십진수 표현은 2입니다.

따라서 3에 해당하는 그레이 코드 십진수는 2입니다.

으아악

설명 -> 5의 이진 표현은 101입니다. 그레이 코드 표현은 111이고 십진수 표현은 7입니다.

따라서 5에 해당하는 그레이 코드 십진수는 7입니다.

솔루션

컴파일러는 이진 형식의 숫자를 이해합니다.

그래서 우리 프로그램에서는 숫자를 10진수 형식으로 입력하면 2진수로 해석됩니다.

그러므로 숫자를 해당 이진수에서 그레이 코드로 변환하면 됩니다.

이진수를 그레이 코드로 변환

이진 표현의 가장 왼쪽 비트는 그레이 코드와 같습니다. 오른쪽의 다음 비트는 연속된 이진 비트를 XOR하여 찾습니다.

예를 들어 -

n = 3이라고 생각하세요. 3의 이진 코드는 011입니다.

  • 바이너리 코드와 그레이 코드의 가장 왼쪽 비트는 동일합니다. 따라서 그레이 코드의 왼쪽에서 첫 번째 비트는 0입니다.

  • 왼쪽에서 두 번째 숫자는 이진 코드 왼쪽에서 첫 번째와 두 번째 숫자를 XOR합니다. 0 XOR 1 = 1.

  • 왼쪽에서 세 번째 숫자는 이진 코드 왼쪽에서 두 번째와 세 번째 숫자를 XOR합니다. 1 XOR 1 = 0.

그래서 그레이 코드는 010입니다.

알고리즘: 비트 연산자 사용

다음 단계에 따라 숫자 n의 그레이 코드를 얻을 수 있습니다 -

  • n 오른쪽으로 1만큼 이동합니다.

  • 오른쪽으로 이동한 숫자를 원래 n과 XOR합니다.

아래는 비트 연산자를 사용하여 바이너리 코드에서 그레이 코드를 찾는 C++ 프로그램입니다

으아악

출력

으아악

문제 설명 2

그레이 코드의 십진수 값이 주어졌을 때 해당 십진수 코드 값을 구하세요.

으아악

설명 -> 입력으로 제공되는 그레이 코드: 1111(이진수 값 15).

이제 Gray 코드를 바이너리 코드로 변환하여 1111에서 1010을 얻으세요.

1010은 이진수 값 10입니다. 따라서 출력.

으아악

설명 -> 입력으로 회색 코드가 제공됩니다: 1010(이진 값 10).

그레이 코드 1010의 이진수 표현은 1100입니다. 1100의 십진수 표현은 12입니다.

회색 코드를 바이너리 코드로 변환

바이너리 코드의 가장 왼쪽 비트(MSB)는 그레이 코드의 MSB와 동일합니다. 다음 비트는 이전 인덱스 이진 비트와 현재 인덱스 그레이스케일 비트를 XOR하여 찾습니다.

예: 그레이 코드 1111을 생각해 보세요.

  • 바이너리 코드의 MSB는 그레이 코드의 MSB와 동일합니다. 따라서 MSB는 1이 됩니다.

  • 왼쪽 2비트는 그레이 코드의 왼쪽 2비트와 바이너리 코드의 가장 왼쪽 비트의 XOR을 확인하세요. 따라서 1^1 = 0입니다.

  • 마찬가지로, 가장 왼쪽 세 번째 숫자의 경우 0^1 = 1입니다.

  • 가장 왼쪽 네 번째 숫자의 경우 1^1 = 0입니다.

따라서 이진 코드는 1010입니다.

아래는 비트 연산자를 사용하여 그레이 코드에서 이진 코드를 찾는 C++ 프로그램입니다

으아악

출력

으아악

결론

이 기사는 그레이 코드 십진수와 주어진 숫자 n의 역수를 찾는 문제를 해결합니다. 우리는 비트 연산자를 사용하여 이 문제를 해결했습니다. 질문의 두 부분 모두에 대해 C++ 프로그램이 제공됩니다.

위 내용은 그레이 코드에 해당하는 십진수와 그 역순의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제