Rumah > pembangunan bahagian belakang > C++ > Perpuluhan bersamaan kod Kelabu dan susunan terbaliknya

Perpuluhan bersamaan kod Kelabu dan susunan terbaliknya

WBOY
Lepaskan: 2023-09-07 18:33:02
ke hadapan
1548 orang telah melayarinya

Perpuluhan bersamaan kod Kelabu dan susunan terbaliknya

Kod kelabu atau kod binari terpantul ialah perwakilan perduaan bagi nombor di mana dua nombor berturut-turut berbeza dengan hanya satu bit.

Sebagai contoh, kod Kelabu 1 ialah 001, dan kod Kelabu 2 ialah 011.

Kod kelabu sering digunakan untuk pembetulan ralat kerana ia menghalang beberapa ralat data yang boleh berlaku dalam perwakilan binari biasa apabila keadaan berubah.

Disebabkan sifat uniknya, kod Kelabu juga membantu dalam peta k, komunikasi, dsb.

Prasyarat

Sebelum membaca lebih lanjut, sila kaji tatatanda kod perpuluhan, binari dan kelabu.

Pernyataan Masalah 1

Diberi nombor perpuluhan n, cari kod Kelabu bagi bentuk perpuluhan nombor itu.

Contoh

Input: 3
Output: 2
Salin selepas log masuk

Penjelasan -> Perwakilan binari 3 ialah 011. Perwakilan kod Kelabunya ialah 010. Perwakilan perpuluhan bagi 010 ialah 2.

Oleh itu, kod Kelabu bersamaan perpuluhan 3 ialah 2.

Input: 5
Output: 7
Salin selepas log masuk

Penjelasan -> Perwakilan binari 5 ialah 101. Perwakilan kod Kelabunya ialah 111 dan perwakilan perpuluhannya ialah 7.

Oleh itu, perpuluhan kod Kelabu bersamaan 5 ialah 7.

Penyelesaian

Penyusun memahami nombor dalam format binari.

Jadi, dalam program kami, apabila kami memasukkan nombor dalam format perpuluhan, ia ditafsirkan sebagai binari.

Jadi kita hanya perlu menukar nombor daripada setara binari kepada kod Kelabunya.

Penukaran Kod Binari kepada Kelabu

Bit paling kiri bagi perwakilan binari adalah sama dengan kod Kelabu. Bit berikut di sebelah kanan ditemui dengan XORing bit binari berturut-turut.

Sebagai contoh -

Pertimbangkan n = 3. Kod binari untuk 3 ialah 011.

  • Bit paling kiri kod binari dan kod Kelabu adalah sama. Oleh itu, bit pertama dari kiri dalam kod Kelabu ialah 0.

  • Untuk digit kedua dari kiri, XOR digit pertama dan kedua dari kiri dalam kod binari. 0 XOR 1 = 1.

  • Untuk digit ketiga dari kiri, XOR digit kedua dan ketiga dari kiri dalam kod binari. 1 XOR 1 = 0.

Oleh itu kod Kelabu: 010.

Algoritma: menggunakan operator bitwise

Kita boleh dapatkan kod Kelabu nombor n dengan mengikut langkah -

  • n Beralih ke kanan sebanyak 1.

  • XOR nombor yang dialihkan ke kanan dengan n asal.

Contoh

Di bawah ialah program C++ yang menggunakan operator bitwise untuk mencari kod Kelabu daripada kod binari

#include <bits/stdc++.h>
using namespace std;
//This function returns the decimal equivalent
// of the gray code of n.
int dec_equi_of_gray(int n) {
   return n ^ (n >> 1);
}
int main(){
   int n = 3;
   cout<<"The decimal equivalent of the gray code of 3 is: ";
   
   //Function call to convert binary code to gray code
   cout << dec_equi_of_gray(n) << endl;
   return 0;
}
Salin selepas log masuk

Output

The decimal equivalent of the gray code of 3 is: 2
Salin selepas log masuk

Pernyataan Masalah 2

Memandangkan nilai perpuluhan kod Kelabu, cari nilai kod perpuluhannya.

Contoh

Input: 15
Output: 10
Salin selepas log masuk

Penjelasan -> Kod kelabu diberikan sebagai input: 1111 (nilai binari 15).

Sekarang, tukar kod Kelabu kepada kod binari untuk mendapatkan 1010 daripada 1111.

1010 ialah nilai binari 10. Oleh itu output.

Input: 10
Output: 12
Salin selepas log masuk

Penjelasan -> Kod kelabu diberikan sebagai input: 1010 (nilai binari 10).

Perwakilan binari kod Kelabu 1010 ialah 1100. Perwakilan perpuluhan bagi 1100 ialah 12.

Kod kelabu kepada penukaran kod binari

Bit paling kiri (MSB) kod binari adalah sama dengan MSB kod Kelabu. Bit berikut ditemui dengan XORing bit binari terindeks sebelumnya dengan bit skala kelabu terindeks semasa.

Contoh: Pertimbangkan Kod Kelabu 1111.

  • MSB kod binari akan sama dengan MSB kod Kelabu. Oleh itu, MSB akan menjadi 1.

  • Untuk dua bit kiri, semak XOR dua bit kiri kod Kelabu dan bit paling kiri kod binari. Oleh itu, 1^1 = 0.

  • Begitu juga, untuk digit ketiga paling kiri, 0^1 = 1.

  • Untuk digit keempat paling kiri, 1^1 = 0.

Oleh itu kod binari: 1010.

Contoh

Di bawah ialah program C++ untuk mencari kod binari daripada kod Kelabu menggunakan operator bitwise

#include <bits/stdc++.h>
using namespace std;

//This function returns the decimal value of 
//the binary code converted from the gray code n.
int gray_to_binary(int n){
   int binary = n;
   while (n > 0){
      n >>= 1;
      binary ^= n;
   }
   return binary;
}
// Driver Code
int main(){
   int n = 15;
   cout<<"The decimal value of the binary code converted from the gray code is: ";
   
   // Function call to convert gray code to binary code
   cout << gray_to_binary(n) << endl;
   
   return 0;
}
Salin selepas log masuk

Output

The decimal value of the binary code converted from the gray code is: 10
Salin selepas log masuk

Kesimpulan

Artikel ini menyelesaikan masalah mencari persamaan perpuluhan kod Kelabu dan songsangannya bagi nombor n yang diberikan. Kami menyelesaikan masalah ini menggunakan operator bitwise. Program C++ disediakan untuk kedua-dua bahagian soalan.

Atas ialah kandungan terperinci Perpuluhan bersamaan kod Kelabu dan susunan terbaliknya. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan