Nu obții 100 de puncte sau ai nelămuriri în privința problemelor? Scrie-mi pe Instagram.
Ai găsit o greșeală, vrei să raportezi un utilizator sau vrei să comunici altceva? Folosește formularul de contact.
Vrei să ne transmiți o părere despre platformă? Folosește formularul de feedback.
Folosește următoarele shortcuturi pentru a naviga mai ușor pe platformă.
Meniu shortcuturi | ? |
Căutare probleme sau utilizatori | / |
Navigare printre rezultatele căutării | ↑, ↓ |
Meniu de contact și feedback | CTRL + Shift + F |
Ieșire din meniuri | Esc |
Setări editor | CTRL + Shift + S |
Schimbare stil editor | CTRL + Shift + E |
Șabloane de cod | CTRL + Shift + 1/2/3 |
Golire editor | CTRL + Shift + 4 |
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
).
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
:
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;
}