👤

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ăspuns :

Răspuns:

d) 6

Explicație:

Daca o luam matematic:

[tex]n \mid 1 = \begin{cases}n + 1, \quad\text{daca } n \% 2 = 0\\ \\ n, \quad \text{daca } n \% 2 = 1\end{cases}[/tex]

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.

Vă mulțumim pentru vizita pe site-ul nostru dedicat Informatică. Sperăm că informațiile oferite v-au fost de ajutor. Nu ezitați să ne contactați pentru orice întrebare sau dacă aveți nevoie de asistență suplimentară. Vă așteptăm cu drag data viitoare și nu uitați să ne adăugați la favorite!


ID Learners: Alte intrebari