Daca mi poate explica si mie cineva codul asta mai explicit
Răspunsuri la întrebare
Răspuns:
Numără cifrele impare dintr-un număr.
Explicație:
Sperând ca partea cu împărțirea am clarificat în întrebările precedente, focusez pe ce mai este interesant, și anume expresia (n % 10) & 1.
& este operatorul și (and) la nivel de bit. Deci ca să-i înţelegem funcţionarea trebuie să convertim operanzii în sistem binar.
Putem observa o regulă: în baza 2 ultima cifră a numerelor pare este întotdeauna 0, iar a numerelor impare întotdeauna 1.
Operatorul & parcurge cei doi operanzi și pe poziţiile unde în baza 2 ambii operanzi au 1, va scrie 1, în rest 0:
Deci dacă unul dintre operanzi este 1, rezultatul operatorului & va fi 1 dacă celălalt operand în baza 2 are ultima cifră 1, adică este impar.
De notat că expresia folosită în acel cod este inutil complicată de folosirea operatorului %. Dacă ultima cifră a unui număr este impar, tot numărul este impar, deci e inutil să extragem ultima cifră. Adică în loc de (n % 10) & 1 putea fi scris doar n & 1.