Verifică dacă un bit de pe o anumită poziție este 1 sau 0 în C++
Dându-se un număr natural n
și o poziție k
, să se determine dacă bitul k
al numărului n
este 1
sau 0
.
Exemplu. Pentru n = 11
, care este 1011
în binar, și k = 3
, răspunsul
este 1
(biții se numerotează de la 0
).
Explicarea algoritmului
Vom folosi proprietățile biților. Mai precis, ne vom utiliza de un bit mask,
cu ajutorul căruia putem să formăm un număr cu toți biții egali cu 0
, mai
puțin bitul de pe poziția k
a lui n
. Dacă acest număr este nenul, atunci
bitul este 1
. În caz contrar, bitul este 0
. Acest număr este chiar 2k
,
care se poate calcula cu shiftarea de biți (citește mai mult) apelând 1 << k
. Iată un exemplu,
pentru n = 197
și k = 0
:
Implementare în C++
Folosind proprietățile menționate mai devreme, codul este următorul:
#include <iostream>
using namespace std;
int main()
{
//Declarăm și citim n și k
int n, k;
cin >> n >> k;
//Calculăm bit maskul
int bm = (1 << k);
if(n & bm) { //Bitul este 1
cout << "1";
} else { //Bitul este 0
cout << "0";
}
return 0;
}
Bibliografie sau alte resurse
DS
Autorul acestei lecții
Dominic Satnoianu
Această lecție a fost redactată de către Dominic Satnoianu.
© 2021 – 2025 Aspire Education Labs SRL. Toate drepturile rezervate.
Așa cum este specificat și în termeni și condiții, conținutul acestei pagini este protejat de legea drepturilor de autor și este interzisă copierea sau modificarea acestuia fără acordul scris al autorilor.
Încălcarea drepturilor de autor este o infracțiune și se pedepsește conform legii.
Comentarii 0