일반적으로 홀수, 짝수를 구한다고 하면 조건문을 사용해서 나머지를 확인할 것이다.
#include <iostream>
int main(){
int test = 1234;
if(test % 2 == 0){
std::cout << "짝수" << std::endl;
}else{
std::cout << "홀수" << std::endl;
}
return 0;
}
and 비트 연산은 양쪽 값의 bit가 모두 1(true) 이면 1, 둘 중에 하나라도 1이 아니면 0을 나타낸다.
이진법은 2의 0제곱 부터 시작하기 때문에, 2의 0제곱의 자리가 0이나 1이냐에 따라 홀수, 짝수 판별이 가능하다.
1011 & 0111 == 0011
0110 & 1000 == 0000
===================
//이진법 -> 십진법
1011 -> 11 //홀수
1010 -> 10 //짝수
따라서, and 비트 연산을 이용해서 쉽게 홀수, 짝수를 구할 수 있다.
#include <iostream>
int main(){
int odd = 1357;
int even = 2468;
std::cout << (odd & 1) << std::endl;
std::cout << (even & 1) << std::endl;
return 0;
}
- 활용
#include <iostream>
#include <string>
using namespace std;
int main() {
string test1 = "123188wtafzxj";
string test2 = "1234";
bool result1;
bool result2;
test1.length() & 1 ? result1 = true : result1 = false;
test2.length() & 1 ? result2 = true : result2 = false;
}
홀수일 경우 참으로, 짝수일 경우 거짓으로 나타나게 하여, 조건문 등을 이용한 활용이 가능하다.
'Programming > C++' 카테고리의 다른 글
c++ 10진법 진법 변환(string) (0) | 2021.01.17 |
---|---|
C++ 입출력 속도 증가(알고리즘 대회) (0) | 2020.09.20 |
C++ max_element(), min_element() 최대값, 최소값 (0) | 2020.08.02 |
C++ string find를 이용한 찾은 문자열 위치 저장 (0) | 2020.07.22 |
C++ vector<vector<int> > 2차원 벡터의 크기 (0) | 2020.07.19 |