Informatică, întrebare adresată de flashppp, 9 ani în urmă

IN C .Scrieti o functie care sa seteze pe 1 bitul 3 al unui numar natural n primit ca parametru.

Răspunsuri la întrebare

Răspuns de rossetta
2
int bit (int n) {
  return (n | (1 << 3));
}

Bitul 3 se afla pe pozitia 4 de la sfarsit spre inceput. Numararea bitilor incepe de la 0.
1 << 3 inseamna 1 in baza 2 ( care se poate scrie ...00000001),  mutat spre stanga (fiecare pozitie mutata spre stanga reprezinta o inmultire cu 2) pana ajunge pe pozitia bitului pe care doresti sa il transformi. Obtinem ...00001000.
Functia o sa faca operatia | pentru n si ...00001000. Indiferent daca bitul afflat pe pozitia respectiva are valoarea 0 sau 1, rezultatul | o sa fie 1

Ex :
1 | 1 = 1
0 | 1 = 1
1 | 0 = 1

Observam ca doar bitul aflat pe pozitia 3 o sa fie schimbat. Sper ca am explicat destul de clar. Iti pun mai jos tot programul ca sa poti sa testezi.

#include <stdio.h>

int bit (int n) {
  return (n | (1 << 3));
}
int main(void) {
  int n;
  scanf("%d", &n);
  printf("%d", bit(n));
  return 0;
}


Alte întrebări interesante