Care din valorile de mai jos nu poate fi returnata la evaluarea expresiei n|1 (n intreg) C/C++
a)7
b)5
c)3
d)6
e)1
Răspunsuri la întrebare
Răspuns:
d) 6
Explicație:
Daca o luam matematic:
n | 1 inseamna primul numar impar, mai mare sau egal cu n.
Deoarece 6 este par, el este "intrusul"
Oricum am alege un n, acesta are si o scriere in baza 2.
Deoarece 1 este constant, sa il scriem valoarea in baza 2(pe 8 biti):
0000 0001
Operatorul sau pe biti lucreaza astfel:
Bitul din rezultat va fi "pornit" daca cel putin unul dintre bitii de la operanzi este 1.
Astfel avem doar 2 cazuri pentru n:
Daca n are ultimul bit = 1, atunci n|1 nu va returna n(deoarece ultimul bit este 1, nu se mai schimba).
Daca n are ultimul bit = 0, atunci expresia "n | 1" va returna n + 1 (ultimul bit din n = 1).
Deoarece n | 1 are intotdeauna ultimul bit = 1, atunci n|1 trebuie intotdeauna sa fie impar, deci valoarea 6 nu poate fi returnata de acea expresie.