Jadual Kandungan
Tatabahasa
Algoritma
Kaedah 1: Operasi bit
Contoh
Output
Penjelasan
Kaedah 2: Kaedah jarak Hamming
Kesimpulan
Rumah pembangunan bahagian belakang C++ Semak jika diberi dua nombor boleh dibuat sama dengan menukar 1 atau 2 bit dalam C++

Semak jika diberi dua nombor boleh dibuat sama dengan menukar 1 atau 2 bit dalam C++

Aug 25, 2023 pm 05:57 PM
Operasi bit c pengaturcaraan Perbandingan nombor

Semak jika diberi dua nombor boleh dibuat sama dengan menukar 1 atau 2 bit dalam C++

Dalam bidang pengaturcaraan komputer, banyak operasi berkisar pada nilai berangka. Dalam sesetengah kes, kita mungkin perlu menentukan sama ada dua nombor boleh dibuat sama dengan mengubah suai beberapa bit. Walaupun masalah ini boleh mendatangkan cabaran, strategi yang betul akan membawa kepada penyelesaian yang berjaya.

Tatabahasa

Untuk membina asas yang kukuh bagi pemahaman yang mendalam tentang algoritma, mari kita mula-mula membiasakan diri dengan sintaks yang digunakan dalam pengekodan seterusnya dengan menggunakan pendekatan khusus ini.

bool checkEquality(int num1, int num2);
Salin selepas log masuk

Hasilkan tindak balas boolean dengan menggunakan fungsi checkEquality untuk menentukan sama ada dua integer num1 dan num2 yang diberikan boleh dijadikan sama dengan menukar hanya satu atau dua bit.

Algoritma

Berikut ialah pecahan langkah demi langkah algoritma kami:

  • Tentukan keputusan XOR bagi num1 dan num2 dan tetapkan output kepada xorResult pembolehubah baharu.

  • Gunakan algoritma untuk mengira bilangan bit set dalam xorResult dan tetapkan hasilnya kepada pembolehubah yang dipanggil setBitCount.

  • Untuk operasi berjaya, setBitCount tidak boleh melebihi 2. Dalam kes ini, fungsi kami akan mengembalikan hasil yang benar. Jika ambang yang ditentukan ini melebihi, kita boleh membuat kesimpulan bahawa output kita mestilah palsu.

  • Sekarang kita mempunyai algoritma, mari kita menyelami sekurang-kurangnya dua cara berbeza untuk menyelesaikan masalah ini.

Kaedah 1: Operasi bit

Dalam kaedah ini kita akan menggunakan operasi bit untuk menyemak sama ada nombor boleh dibuat sama.

Contoh

#include <iostream>

bool checkEquality(int num1, int num2) {
   int xorResult = num1 ^ num2;
   int bitCheck = xorResult & (xorResult - 1);
   return (bitCheck == 0);
}

int main() {
   int number1, number2;
   std::cout << "Enter the first number: ";
   std::cin >> number1;
   std::cout << "Enter the second number: ";
   std::cin >> number2;
    
   bool result = checkEquality(number1, number2);
   if (result) {
      std::cout << "It is possible to make the numbers equal by changing only one or two bits." << std::endl;
   } else {
      std::cout << "It is not possible to make the numbers equal by changing only one or two bits." << std::endl;
   }  
   return 0;
}
Salin selepas log masuk

Output

Enter the first number: Enter the second number: It is not possible to make the numbers equal by changing only one or two bits.
Salin selepas log masuk
Salin selepas log masuk

Penjelasan

Dengan mengubah suai nilai satu atau dua bit, kod C++ melakukan semakan mudah untuk menentukan sama ada penjajaran sempurna antara dua nilai yang dibekalkan boleh diwujudkan semasa pemprosesan. Untuk mencapai matlamat ini, bahagian penting kod adalah untuk menentukan fungsi khas yang dipanggil "checkEquality". Menggunakan fungsi tersuai ini memerlukan penyediaan dua pembolehubah integer sebagai input. Jenis output fungsi tertentu ini menggunakan logik Boolean supaya pengguna boleh mendapatkan hasil dengan mudah yang menunjukkan sama ada argumen yang dibekalkan kepada fungsi pada masa jalan adalah mencukupi untuk penjajaran berangka yang sempurna.

Untuk tujuan pengiraan, program ini menggunakan algoritma XOR untuk membandingkan input integer di atas melalui kaedah checkEquality. Selepas itu, hasil yang disimpan secara automatik ditangkap dalam pembolehubah "xorResult". Elemen utama dalam langkah seterusnya ialah mengira hasil bitwise DAN perantaraan antara xorResult dan XORResult - 1. Pada peringkat ini, apabila nilai pulangan ialah "0", andaian pembolehubah bitCheck menjadi perlu. Kerana ia menunjukkan bahawa syarat yang diperlukan dipenuhi, kita boleh menganggap bahawa satu atau dua bit dalam input integer perlu diubah untuk memenuhi permintaan yang dibuat oleh fungsi checkEquality. Setelah selesai, program menggesa pengguna untuk input, sebelum menghantar parameter ke dalam kaedah checkEquality sebagai peringkat pengiraan akhir. Selepas proses tamat, mesej output menunjukkan kehadiran/ketiadaan perubahan tahap bit yang diperlukan dan mesej yang sepadan dipaparkan dalam output konsol. Pelaksanaan ini menunjukkan contoh terbaik manipulasi bitwise dan penggunaan XOR, daripada C++.

Kaedah 2: Kaedah jarak Hamming

Dalam kaedah ini, kita akan menggunakan konsep jarak Hamming untuk menyelesaikan masalah.

Contoh

#include <iostream>

int countSetBits(int num) {
   int count = 0;
   while (num) {
      num &= (num - 1);
      count++;
   }
   return count;
}

bool checkEquality(int num1, int num2) {
   int xorResult = num1 ^ num2;
   int setBitCount = countSetBits(xorResult);
   return (setBitCount <= 2);
}

int main() {
   int number1, number2;
   std::cout << "Enter the first number: ";
   std::cin >> number1;
   std::cout << "Enter the second number: ";
   std::cin >> number2;
    
   bool result = checkEquality(number1, number2);
   if (result) {
      std::cout << "It is possible to make the numbers equal by changing only one or two bits." << std::endl;
   } else {
      std::cout << "It is not possible to make the numbers equal by changing only one or two bits." << std::endl;
   }   
   return 0;
}
Salin selepas log masuk

Output

Enter the first number: Enter the second number: It is not possible to make the numbers equal by changing only one or two bits.
Salin selepas log masuk
Salin selepas log masuk

Penjelasan

Dalam contoh ini kami menyediakan program C++ yang direka bentuk untuk menentukan sama ada kami boleh membuat perubahan kepada satu atau mungkin dua bit untuk menjadikan dua nombor berbeza setara. Selain itu, terdapat fungsi yang dipanggil "countSetBits" yang menggunakan algoritma Kemighan untuk menentukan bilangan bit set yang terdapat dalam nilai integer.

Dalam fungsi checkEquality, kod mengira OR eksklusif daripada dua nombor input dan menyimpan hasilnya dalam xorResult. Pernyataan sebelumnya mencetuskan fungsi countSetBits untuk menentukan bilangan bit yang ditetapkan dalam xorResult, yang kemudiannya terkumpul dalam setBitCount. Apabila setBitCount ditentukan sebagai dua atau kurang, ini bermakna hanya satu atau dua bit perlu diubah suai untuk mencapai keseimbangan, menyebabkan fungsi kembali benar. Jika tidak, pulangkan palsu.

Dalam fungsi utama, program menggesa pengguna memasukkan dua nombor. Ia kemudian memanggil fungsi checkEquality menggunakan nombor yang dibekalkan pengguna dan menyimpan hasilnya. Akhir sekali, bergantung pada nilai hasil, atur cara mencetak mesej yang sesuai yang menunjukkan sama ada adalah mungkin untuk membuat nombor sama dengan menukar satu atau dua bit.

Kod ini menyediakan pelaksanaan masalah yang jelas, menggunakan operasi XOR dan algoritma Kernighan untuk mengira bit yang ditetapkan dengan cekap.

Kesimpulan

Artikel kami membincangkan masalah menentukan sama ada dua nombor yang diberikan boleh sama manakala hanya menukar satu atau dua bit. Untuk menyelesaikan masalah ini, kami mencadangkan dua kaedah yang berkesan - kaedah operasi bit dan kaedah jarak Hamming. Kedua-dua kaedah menyediakan penyelesaian yang cekap. Kami juga menyediakan contoh kod boleh laku sebenar berdasarkan kaedah ini. Dengan memahami dan melaksanakan kaedah ini, anda boleh menyemak dengan berkesan sama ada dua nombor boleh dibuat sama dengan menukar beberapa bit.

Atas ialah kandungan terperinci Semak jika diberi dua nombor boleh dibuat sama dengan menukar 1 atau 2 bit dalam C++. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Gunakan C++ untuk menulis kod untuk mencari nombor bukan persegi Nth Gunakan C++ untuk menulis kod untuk mencari nombor bukan persegi Nth Aug 30, 2023 pm 10:41 PM

Kita semua tahu nombor yang bukan kuasa dua mana-mana nombor, seperti 2, 3, 5, 7, 8, dll. Terdapat N nombor bukan persegi, dan adalah mustahil untuk mengetahui setiap nombor. Jadi, dalam artikel ini, kami akan menerangkan segala-galanya tentang nombor tanpa kuasa dua atau bukan kuasa dua dan cara untuk mencari nombor bukan kuasa dua N dalam C++. Nombor bukan kuasa dua ken Jika nombor ialah kuasa dua integer, maka nombor itu dipanggil kuasa dua sempurna. Beberapa contoh nombor kuasa dua sempurna ialah -1isquareof14issquareof29issquareof316issquareof425issquareof5 Jika nombor bukan kuasa dua mana-mana integer, maka nombor itu dipanggil bukan kuasa dua. Sebagai contoh, 15 nombor bukan kuasa dua yang pertama ialah -2,3,5,6,

Analisis ringkas operasi bit (pengendali bitwise) di Golang Analisis ringkas operasi bit (pengendali bitwise) di Golang Feb 24, 2023 pm 07:42 PM

Pada zaman dahulu apabila memori komputer mahal dan kuasa pemprosesan terhad, menggunakan operasi bit gaya penggodam untuk memproses maklumat adalah cara yang diutamakan (dan dalam beberapa kes satu-satunya cara). Sehingga hari ini, penggunaan langsung operasi bit masih merupakan bahagian penting dalam banyak bidang pengkomputeran, seperti pengaturcaraan sistem peringkat rendah, pemprosesan grafik, kriptografi, dll.

Algoritma penyongsangan untuk putaran kanan tatasusunan yang ditulis dalam C++ Algoritma penyongsangan untuk putaran kanan tatasusunan yang ditulis dalam C++ Sep 08, 2023 pm 08:17 PM

Dalam artikel ini, kita akan mempelajari tentang algoritma pembalikan untuk memutar tatasusunan yang diberikan ke kanan dengan elemen k, contohnya −Input:arr[]={4,6,2,6,43,7,3,7}, k= 4Output:{43,7,3,7,4,6,2,6}Penjelasan:Pusingeachelementofarrayby4-elementtotherightmemberi{43,7,3,7,4,6,2,6}.Input:arr[]= {8 ,5,8,2,1,4,9,3},k=3Output:{4,9,3,8,5,8,2,1} Cari penyelesaian

Dalam pengaturcaraan C, cari luas bulatan Dalam pengaturcaraan C, cari luas bulatan Aug 25, 2023 pm 10:57 PM

Bulatan ialah rajah tertutup. Semua titik pada bulatan adalah sama jarak dari titik di dalam bulatan. Titik tengah dipanggil pusat bulatan. Jarak dari satu titik ke pusat bulatan dipanggil jejari. Luas ialah perwakilan kuantitatif bagi rentang dimensi bagi rajah tertutup. Luas bulatan ialah kawasan yang tertutup dalam dimensi bulatan. Formula untuk mengira luas bulatan, Luas=π*r*r Untuk mengira luas, kami memberikan jejari bulatan sebagai input, kami akan menggunakan formula untuk mengira luas, algoritma LANGKAH1: Takeradiusasinputfromtheuserusingstdinput.STEP2 : Kirakaluas bulatan, luas=(

Ditulis dalam C++, cari bilangan empat kali ganda yang tiga sebutan pertamanya ialah jujukan aritmetik dan tiga sebutan terakhir ialah jujukan geometri. Ditulis dalam C++, cari bilangan empat kali ganda yang tiga sebutan pertamanya ialah jujukan aritmetik dan tiga sebutan terakhir ialah jujukan geometri. Aug 30, 2023 pm 02:09 PM

Dalam artikel ini kami akan menerangkan semua cara yang mungkin untuk mencari kuarteron, menggunakan A.P. untuk 3 sebutan pertama dan G.P. untuk 3 sebutan terakhir. Pertama, kami akan menerangkan definisi asas janjang aritmetik (A.P.) dan janjang geometri (G.P.). Kemajuan Aritmetik (A.P.) - Ia adalah urutan nombor di mana perbezaan sepunya (d) adalah sama atau malar, bermakna perbezaan dua nombor berturut-turut adalah malar. Contohnya: 1,3,5,7,9|d=2 Kemajuan Geometrik (G.P.) - Ini ialah jujukan nombor di mana nisbah sepunya (r) adalah sama, yang bermaksud kita boleh mendarab nombor sebelumnya dengan tetap nombor. Contohnya: 3, 6, 12, 24, ....|r=2 Dalam masalah ini, kita perlu menentukan berapa banyak dalam array arr[] bagi N integer

Cari bilangan pasangan unik dalam tatasusunan menggunakan C++ Cari bilangan pasangan unik dalam tatasusunan menggunakan C++ Sep 07, 2023 am 11:53 AM

Kami memerlukan pengetahuan yang betul untuk mencipta beberapa pasangan unik dalam sintaks tatasusunan C++. Semasa mencari bilangan pasangan unik, kami mengira semua pasangan unik dalam tatasusunan yang diberikan iaitu semua pasangan yang mungkin boleh dibentuk di mana setiap pasangan harus unik. Contohnya -Input:array[]={5,5,9}Output:4Explanation:Thenumberofalluniquepairsare(5,5),(5,9),(9,5)and(9,9).Input:array[] = {5,4,3,2,2}Output:16 Cara Mencari Penyelesaian Terdapat dua cara untuk menyelesaikan masalah ini, iaitu −

Bagaimana untuk melaksanakan operasi bit menggunakan fungsi BitSet dalam Java Bagaimana untuk melaksanakan operasi bit menggunakan fungsi BitSet dalam Java Jun 26, 2023 pm 06:11 PM

BitSet ialah kelas dalam Java yang digunakan untuk operasi bit. BitSet boleh dianggap sebagai tatasusunan yang terdiri daripada bit binari, dan setiap bit binari hanya boleh 0 atau 1. BitSet menyediakan satu siri kaedah untuk melaksanakan operasi bit, termasuk menetapkan, mengosongkan, membalikkan, mendapatkan, dll. Sangat mudah untuk menggunakan BitSet untuk melaksanakan operasi bit dalam Java Mari perkenalkan langkah operasi khusus di bawah. 1. Cipta objek BitSet Objek BitSet boleh dibuat dalam dua cara: 1. Cipta objek BitSet menggunakan nilai lalai.

Tulis kod menggunakan C++ untuk mencari bilangan subarray dengan nilai minimum dan maksimum yang sama Tulis kod menggunakan C++ untuk mencari bilangan subarray dengan nilai minimum dan maksimum yang sama Aug 25, 2023 pm 11:33 PM

Dalam artikel ini, kami akan menggunakan C++ untuk menyelesaikan masalah mencari bilangan subarray yang nilai maksimum dan minimumnya adalah sama. Berikut ialah contoh masalah −Input:array={2,3,6,6,2,4,4,4}Output:12Penjelasan:{2},{3},{6},{6}, {2 },{4},{4},{4},{6,6},{4,4},{4,4}dan{4,4,4}arethesubarraysyang boleh dibentuk denganmaksimumdanminimumelemensama.Input:array={3, 3, 1,5,

See all articles