Advertisement
lil_SV

Untitled

Sep 23rd, 2021
783
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.80 KB | None | 0 0
  1. // Четное число имеет вид: *1, то есть последний бит этого числа неотрицательный.
  2. // Значит что мы можем провести побитовую коньюнкцию(побитовое И) с числом 1
  3. // и получить 2 исхода:
  4. // *00000 или *00001, что будет равно 0 или 1 в десятичной системе счисления соответственно.
  5. //
  6. // Пример функции реализующий этот подход:
  7.  
  8. bool isEven(int x){
  9.     return x&1;
  10. }
  11.  
  12. // Главный плюс функции это её эффективность, однако у нее есть и существенный минус:
  13. // её сложно понять и поддерживать в дальнейшем.
  14. //
  15. // Если бы в реальности стояла задача написать функцию с таким функционалом,
  16. // я бы написал следующий код:
  17.  
  18. inline bool isEven(const int & x){
  19.     return x%2;
  20. }
  21.  
  22. // В первую очередь я изменил аргумент функции на константную ссылку на int.
  23. // Это будет более эффективно рассходывать память, так как переменная не копируется,
  24. // но при этом можно использовать как l-value, так и r-value аргументы.
  25. // Также я добавил ключевое слово inline, которое указывает компилятору,
  26. // что тело данной функции можно встроить, если компилятор посчитает это
  27. // более эффективным, нежели её вызов.
  28. //
  29.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement