Rumah >pembangunan bahagian belakang >C++ >Operasi bit dalam C++ dan kemahiran aplikasinya

Operasi bit dalam C++ dan kemahiran aplikasinya

WBOY
WBOYasal
2023-08-22 12:39:171689semak imbas

Operasi bit dalam C++ dan kemahiran aplikasinya

Operasi bitwise dalam C++ ialah kaedah pengiraan yang biasa digunakan oleh pengaturcara Dengan menggunakan operasi bitwise untuk memproses data, beberapa tugas pengkomputeran yang kompleks boleh diselesaikan dengan lebih cekap. Artikel ini memperkenalkan simbol operasi bit biasa dalam C++ dan teknik aplikasinya, serta beberapa contoh yang mungkin digunakan dalam pembangunan sebenar.

  1. Simbol operasi bitwise

C++ menyediakan enam simbol operasi bitwise yang boleh beroperasi pada bit binari, empat daripadanya ialah operator bitwise dan dua lagi ialah operator shift. Simbol operasi bitwise adalah seperti berikut:

& operasi Bitwise AND: Hasilnya ialah 1 apabila kedua-dua bit binari adalah 1, jika tidak ia adalah 0.

|. Operasi Bitwise ATAU: Hasilnya ialah 0 apabila kedua-dua bit binari adalah 0, jika tidak ia adalah 1.

^ Operasi XOR Bitwise: jika dua bit binari adalah sama, hasilnya ialah 0, dan jika dua bit binari berbeza, hasilnya ialah 1.

~ Operasi penafian bitwise: menafikan bit binari, iaitu, 0 menjadi 1, dan 1 menjadi 0.

Simbol operasi anjakan adalah seperti berikut:

Operasi anjakan kanan: Gerakkan nombor perduaan ke kanan mengikut bilangan digit yang ditentukan, dan isikan bit tinggi dengan 0 atau 1 (bergantung pada sama ada nombor asal adalah positif atau negatif).
  1. Kemahiran aplikasi

Operasi bit digunakan secara meluas dalam operasi komputer peringkat rendah Banyak algoritma yang cekap boleh direalisasikan melalui beberapa teknik operasi bit pintar. Berikut adalah beberapa teknik yang biasa digunakan:

2.1 Menentukan pariti

Untuk nombor perduaan, apabila digit terakhirnya ialah 1, nombor itu ganjil, dan sebaliknya. Oleh itu, kita boleh menentukan pariti nombor melalui operasi bit.

Untuk sebarang integer n, jika hasil n & 1 ialah 0, ia bermakna n ialah nombor genap, jika tidak ia adalah nombor ganjil. Contohnya:

int n = 5;
if( n & 1 ){

cout << "奇数" << endl;

}
else {

cout << "偶数" << endl;

}

2.2 Tukar nilai dua nombor

Tukar nilai dua pembolehubah , secara amnya Kaedahnya ialah menggunakan pembolehubah ketiga untuk menyimpan nilai salah satu pembolehubah, dan kemudian memberikan nilai pembolehubah lain kepadanya. Walau bagaimanapun, menggunakan operasi bit tidak memerlukan penggunaan ruang tambahan untuk penyimpanan, tetapi boleh dilaksanakan secara terus melalui operasi bit XOR, iaitu:

int a = 10, b = 20
a = a ^ b = b ^ a;
a = a ^ b;

Selepas pelaksanaan, nilai pembolehubah a ialah 20, nilai pembolehubah b ialah 10, dan nilai kedua-dua pembolehubah ditukar.

2.3 Nombor 1 dalam nombor binari

Apabila mengira nombor 1 dalam nombor binari, anda boleh menggunakan & operasi + anjakan kanan untuk mengumpul dan menyelesaikannya satu demi satu. Kaedah pelaksanaan khusus adalah seperti berikut:

int countOne(unsigned int n){

int count = 0;
manakala (n != 0){

   if (n & 1 == 1){
       count++;
   }
   n = n >> 1; //右移一位

}

return count;
}

2.4 Dapatkan i- bit ke dalam binari

Kita boleh menggunakan operasi anjakan kiri untuk mengalihkan nombor 1 ke kiri dengan i - 1 bit, dan kemudian gunakan operasi AND bitwise & untuk mendapatkan bit ke-i dalam nombor binari. Kaedah pelaksanaan khusus adalah seperti berikut:

bool getBit(unsigned int n, int i){

return (n & (1 << i)) !=0 ;

}

2.5 Tetapkan bit ke-i dalam nombor binari kepada 1

Alihkan nombor 1 ke kiri dengan i bit, dan kemudian alihkan binari ini Lakukan operasi OR bitwise pada nombor dan nombor asal untuk menetapkan bit ke-i dalam nombor asal kepada 1.

unsigned int setBit(unsigned int n, int i){

return n | (1 << i);

}

2.6 Tetapkan bit ke-i dalam nombor binari kepada 0

Alihkan nombor 1 ke kiri dengan bit i, kemudian songsang dan cantumkan nombor perduaan Lakukan operasi bitwise DAN dengan nombor asal untuk menetapkan bit ke-i dalam nombor asal kepada 0.

unsigned int clearBit(unsigned int n, int i){

return n & ~(1 << i);

}

    Contoh aplikasi
Operasi bit juga mempunyai banyak aplikasi dalam pembangunan sebenar beberapa tugasan berkaitan boleh diselesaikan dengan lebih cekap. Sebagai contoh, dalam pemprosesan imej, piksel imej sering diduakan, had atas dan bawah ditetapkan kepada 0 dan 255, dan nilai piksel sasaran ditukar kepada 0 atau 255. Pemprosesan yang cekap boleh dicapai menggunakan operasi bit contoh kod adalah seperti berikut :

untuk (int i = 0; i
for (int j = 0; j < img.colnum(); j++){        
    if (img.at(i,j) < threshold){
        img.at(i,j) = 0; //设为0
    }
    else {
        img.at(i,j) = 255; //设为255
    }
}
}

Dengan beroperasi pada digit binari, banyak algoritma dan struktur data yang cekap juga boleh dilaksanakan, seperti peta bit, jadual Hash dsb.

Ringkasnya, operasi bit ialah alat yang berkuasa dan digunakan secara meluas dalam pengaturcaraan. Kemahiran dalam simbol dan teknik operasi bit boleh memainkan peranan aktif dalam melaksanakan algoritma dan struktur data yang cekap dan meningkatkan kecekapan operasi program.

Atas ialah kandungan terperinci Operasi bit dalam C++ dan kemahiran aplikasinya. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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